使用app_store_scraper爬取苹果播客评论遇401错误,疑API或依赖变更
解决app-store-scraper爬取播客评论时的401错误
可能原因及修复方案
1. Apple API认证规则变更
Apple的App Store评论接口大概率调整了认证机制,旧版本app-store-scraper未适配新逻辑:
- 先升级包到最新版本:
pip install --upgrade app-store-scraper - 升级后仍报错的话,查看包的最新文档,确认是否新增了认证参数(如请求头、token等)。
2. 请求触发反爬限制
401也可能是Apple检测到异常请求,临时限制了你的IP或请求频率:
- 降低
how_many参数值,分批次爬取,避免单次请求量过大。 - 在代码中添加请求间隔,比如每爬取一批就暂停几秒(用
time.sleep()实现)。
3. 依赖包版本冲突
检查requests等核心依赖的版本是否与app-store-scraper兼容:
- 查看包的
requirements.txt文件,安装对应版本的依赖:pip install requests==<兼容版本号> - 建议创建虚拟环境,重新安装所有依赖,规避全局环境的版本冲突。
4. 播客参数失效
确认app_id和app_name是否正确,播客的URL参数可能已变更:
- 从Apple Podcasts官网重新获取目标播客的最新ID和名称,替换到代码中。
调整后的示例代码
以下是适配分批爬取的代码示例(以最新版包的要求为准):
import pandas as pd import numpy as np import time from app_store_scraper import AppStore # 使用最新确认的app_id和地区参数 podcast = AppStore(country='us', app_id='1556267741') # 分批爬取,控制请求频率 batch_size = 1000 target_total = 7000 all_reviews = [] while len(all_reviews) < target_total: podcast.review(how_many=batch_size) # 提取新增的评论 new_reviews = podcast.reviews[len(all_reviews):] if not new_reviews: break # 没有更多评论时终止 all_reviews.extend(new_reviews) time.sleep(5) # 每批爬取后暂停5秒 print(f"This podcast has {len(all_reviews)} reviews.") # 直接将评论列表转为DataFrame,无需转numpy数组 podcastdf = pd.DataFrame(all_reviews) display(podcastdf)
内容的提问来源于stack exchange,提问作者OnceUponATime
相关产品推荐
相关产品推荐

