在Jupyter Notebook运行instascrape时遇JSONDecodeError求助
解决instascrape爬取Instagram地点数据时的JSONDecodeError错误
这个错误本质是Instagram的反爬机制在起作用——你用默认请求方式发起的请求被拦截了,返回的不是合法的JSON数据(可能是HTML页面或者反爬验证内容),导致解析JSON时失败。
下面是具体的解决步骤:
- 获取合法请求头:打开浏览器登录Instagram,访问目标地点页面,按F12打开开发者工具→Network标签→刷新页面,找到第一个文档请求,复制Request Headers里的
User-Agent和Cookie(Cookie包含你的登录会话信息,必须要有)。 - 带请求头发起请求:用
requests.Session封装请求头,传给scrape方法。
修改后的代码示例:
from instascrape import Location import requests # 替换成你从浏览器获取的实际值 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Cookie": "你的Instagram登录Cookie内容" } # 创建带请求头的会话 session = requests.Session() session.headers.update(headers) url = 'https://www.instagram.com/explore/locations/212988663/new-york-new-york/' new_york = Location(url) new_york.scrape(session=session) # 测试输出地点名称和帖子数 print(new_york.name) print(new_york.posts)
注意事项:
- Cookie有有效期,过期后需要重新从浏览器获取
- 不要频繁发起请求,避免被Instagram封禁账号或IP
内容的提问来源于stack exchange,提问作者Muhammad Anas Jamshed
相关产品推荐
相关产品推荐

