谁能告诉我如何访问基础 URL 以查看给定用户的 Instagram 关注者?我可以使用 Instagram API 做到这一点,但考虑到审批流程的未决更改,我决定改用抓取。
Instagram 网络浏览器允许您查看任何给定公共用户的关注者列表 - 例如,要查看 Instagram 的关注者,请访问“ https://www.instagram.com/instagram ”,然后单击关注者 URL 以打开一个通过查看器分页的窗口(注意:您必须登录到您的帐户才能查看此窗口)。
我注意到当此窗口弹出时,URL 更改为“ https://www.instagram.com/instagram/followers ”,但我似乎无法查看此 URL 的基础页面源。
因为它出现在我的浏览器窗口中,所以我认为我可以抓取。但是我必须使用像 Selenium 这样的包吗?有谁知道底层 URL 是什么,所以我不必使用 Selenium?
例如,我可以通过访问“instagram.com/instagram/media/”直接访问底层提要数据,我可以从中对所有迭代进行抓取和分页。我想对关注者列表做类似的事情,并直接访问这些数据(而不是使用 Selenium)。
原文由 user812783765 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑:2018 年 12 月更新:
自发布以来,Insta land 的情况发生了变化。这是一个更新的脚本,它更像 pythonic 并且更好地利用了 XPATH/CSS 路径。
请注意,要使用此更新的脚本,您必须安装
explicit
程序包(pip install explicit
),或使用waiter
显式转换每一行以等待 accflen-ium-explicit我做了一个快速基准测试来展示性能如何随着您尝试以这种方式抓取的关注者数量呈指数下降:
原帖:你的问题有点混乱。例如,我不太确定“我可以通过所有迭代从中抓取和分页”到底是什么意思。您目前使用什么来抓取和分页?
无论如何,
instagram.com/instagram/media/
instagram.com/instagram/followers
同一类型的端点。media
端点似乎是一个 REST API,配置为返回一个易于解析的 JSON 对象。据我所知,
followers
端点并不是真正的 RESTful 端点。相反,在您单击“关注者”按钮后,Instagram AJAX 会将信息发送到页面源(使用 React?)。我认为如果不使用像 Selenium 这样的东西,你将无法获得这些信息,Selenium 可以加载/呈现向用户显示关注者的 javascript。此示例代码将起作用:
由于多种原因,这种方法存在问题,其中最主要的是相对于 API 来说它有多慢。