在 Instagram 中抓取一定数量的帖子
Posted
技术标签:
【中文标题】在 Instagram 中抓取一定数量的帖子【英文标题】:Scraping certain number of posts in Instagram 【发布时间】:2019-02-04 14:26:49 【问题描述】:我正在使用下面的帖子链接的方法来抓取 Instagram 个人资料。 我可以更改检索的图像数量吗?在 Json 响应中,我看到了“has_next_page”参数,但我不确定如何使用它。 提前致谢。 发帖链接: What is the new instagram json endpoint?
使用代码:
r = requests.get('https://www.instagram.com/' + profile + '/')
soup = BeautifulSoup(r.content)
scripts = soup.find_all('script', type="text/javascript",
text=re.compile('window._sharedData'))
stringified_json = scripts[0].get_text().replace('window._sharedData = ', '')[:-1]
data = json.loads(stringified_json)['entry_data']['ProfilePage'][0]
【问题讨论】:
Instagram 有一个 API,你应该使用它而不是试图抓取他们的网站。 【参考方案1】:您可以在此处找到 Instagram API:https://www.instagram.com/developer/ 我认为文档非常简洁,您只需注册即可获得访问令牌。
【讨论】:
谢谢,但 API 有限制,我只有几天时间来获取数据集(我需要它用于项目)。【参考方案2】:您的问题如下:在您的代码中,您从个人资料页面抓取数据,这意味着您只能获取已经加载的图像。 这就是为什么你不能只为它设置一个更大的数字来获得更多图像。
我推荐以下之一:
1.使用 Instagram 的 API,该 API 附带已构建的方法,可以完全按照您的意愿去做(不要重新发明***)。 p>
2. 如果您想自己完成大部分工作(比如说作为练习),我建议您使用 Selenium,它是一种自动化工具。 在您的代码中,您使用 BeautifulSoup 非常适合从 html 文件中检索数据,但您需要做更多的事情:滚动 - 这是为了允许加载更多图片。这样您就可以获得任意数量的图片。
如果您需要示例,可以查看我为 Twitter here 写的类似内容的示例
【讨论】:
以上是关于在 Instagram 中抓取一定数量的帖子的主要内容,如果未能解决你的问题,请参考以下文章