使用snscrape爬取Instagram标签时出现IndexError,求解决
解决snscrape爬取Instagram标签时的IndexError问题
这个错误的核心原因是Instagram更新了网页结构,snscrape旧版本依赖的window._sharedData字段已不存在或位置变更,导致split操作后无法获取对应索引的元素。
以下是可行的解决办法:
升级snscrape到最新版本
开发者通常会跟进Instagram的页面变化修复问题,执行命令更新:pip install --upgrade snscrape更新后重新运行代码,大概率能解决问题。
添加登录凭证绕过访问限制
目前Instagram对未登录用户的内容访问限制越来越严格,即使升级库也可能爬不到数据。可以通过传入登录后的Cookie绕过限制:- 在浏览器登录Instagram,打开开发者工具(F12),找到Cookie中的
sessionid字段; - 修改代码,初始化Scraper时传入cookie参数:
import snscrape.modules.instagram as sninstagram query = 'google' # 替换成你自己的sessionid值 cookies = {'sessionid': '你的sessionid内容'} scraper = sninstagram.InstagramHashtagScraper(query, cookies=cookies) for ins in scraper.get_items(): print(vars(ins)) break
- 在浏览器登录Instagram,打开开发者工具(F12),找到Cookie中的
备选方案:使用instagrapi库
如果snscrape始终无法适配,instagrapi是专门针对Instagram的爬虫库,对登录和内容爬取的支持更稳定,示例代码:from instagrapi import Client cl = Client() # 替换成你的Instagram账号密码 cl.login('你的账号', '你的密码') # 获取标签下的最新内容 medias = cl.hashtag_medias_recent('google', amount=10) for media in medias: print(media.dict())
内容的提问来源于stack exchange,提问作者Qihan Wang
相关产品推荐
相关产品推荐

