首页 > 解决方案 > 使用 selenium 抓取 Instagram 关注者

问题描述

我一直试图从我的一个大约 50k 的业务页面中删除所有关注者。我使用 Selenium 网络驱动程序和 Python 来报废。

我能够获得关注者对话框,并且可以滚动该对话框以加载更多关注者。但是,随着更多关注者被加载到对话框中,滚动速度不断降低。

这种技术可以奏效,但需要几天时间。这也要求机器一直处于活动状态而不是睡眠,否则进程将停止。而且,在大多数情况下,它会在 3k 到 4k 的追随者抓取后给出错误。

我想知道我的脚本和抓取追随者的方式是否有任何问题,或者这很常见。而且,如果有一种有效的方法可以做到这一点?

followers_dialoge = driver.find_element_by_xpath("/html/body/div[3]/div[1]/div/div[2]")
n = 1
for i in range(int(allfoll / n)):
     next_length = len(driver.find_elements_by_class_name('FPmhX'))
     if next_length != prev_length:
         new_followers = driver.find_elements_by_class_name('FPmhX')[-12:]


          with open(followers_dir, "a") as followers_file:

              for element in new_followers:
                   if element.get_property('href'):
                       title = element.get_property('title')
                       href = element.get_property('href')
                       followers_file.write(title + "," + href + "," + "\n")

在滚动过程中,每次在对话框中加载 12 个关注者,所以在第 5 行,我得到新的 12 个关注者并保存它们。我知道我可以等待完整的对话框加载,我可以保存所有 50k 一次,但由于它很容易在几分钟/几小时后停止,这就是我在此过程中尝试保存它们的原因。(这可能是速度慢的原因之一)

标签: pythonseleniumxpathweb-scrapingbeautifulsoup

解决方案


您需要使用 query_hash 和 end_cursor 值来查询下一个关注者列表。打开 Firefox,点击用户的关注者列表,点击检查元素,切换到网络选项卡并按 XHR 过滤并开始向下滚动,您将看到 Instagram 发出获取下一个关注者列表的请求。该线程有助于入门:https ://stackoverflow.com/a/50058700/1890619


推荐阅读