如何在网络上抓取喜欢 Instagram 图片的用户?

Posted

技术标签:

【中文标题】如何在网络上抓取喜欢 Instagram 图片的用户?【英文标题】:How to web scrape users who liked an instagram picture? 【发布时间】:2019-07-06 18:50:29 【问题描述】:

我将如何从 Instagram 收集此类数据用于网络抓取项目,我尝试自己使用 beautifulsoup 获取它并请求真正解析整个页面: 但它不起作用

import requests
from bs4 import BeautifulSoup
usrs=[]
soup=BeautifulSoup(requests.get("https://www.instagram.com/p/Bziq7f2C-jM/").content,'html.parser')
elem1=soup.find_all('div',class_="EtaWk")
#elem1 contains all the usernames within it 
if elem1:
    elem2=elem1.find('ul',class_="XQXOT")
    if elem2:
        xelems=elem2.findAll('ul',class_="Mr508")
        for i in range(len(xelems)):
            lis=xelems[i].find('a',class_="FPmhX notranslate TlrDj",title=True)
            usrs.append(a["title"])

【问题讨论】:

你能扩展一下“不起作用”吗?大多数 Instagram 将使用 javascript 呈现,我怀疑您请求的内容中有很多 content 并且FPmhX notranslate TlrDj 似乎不太可能稳定。您应该通过 API 执行此操作。 我怎么能用 IG api 做到这一点,有可能 前往instagram.com/developer并找出答案 看来我需要一个网站才能获得 api 还有其他方法吗 【参考方案1】:

如果您不需要使用 Beautifulsoup 并自己解析 HTML 响应,则可以使用 Instaloader,这是一个 Python 库,可以非常轻松地访问 Instagram。做pip install instaloader安装后就可以了

import instaloader
L = instaloader.Instaloader()
Post = instaloader.Post.from_shortcode(L.context, 'Bziq7f2C-jM')

然后,Post.get_likes() 在点赞帖子的个人资料上返回一个迭代器,因此要打印所有用户名,您可以这样做

for like in Post.get_likes():
    print(like.username)

除了是一个简单的解决方案之外,Instaloader 还具有自动处理速率限制的优点,并且它支持处理登录和访问私人配置文件的帖子。

【讨论】:

非常感谢您的帮助

以上是关于如何在网络上抓取喜欢 Instagram 图片的用户?的主要内容,如果未能解决你的问题,请参考以下文章

抓取点赞数最高的 Instagram 帐户图片

如何响应最近的私有 API 更改执行未经身份验证的 Instagram 网络抓取?

网络抓取 Instagram 追随者数量 BeautifulSoup

使用 Selenium 和 python 为 Instagram 提供上传文件路径

如何用 BeautifulSoup 抓取 Instagram

如何在 Instagram 上向下滚动到末尾