Reddit数据爬取代码输出异常:参数获取错误求助
问题排查与解决
核心问题原因
- 运行环境不匹配:你的代码是为命令行直接执行设计的,但在Jupyter Notebook/Lab中运行时,
sys.argv获取的是Jupyter启动内核的参数(比如-f和内核配置文件路径),而非你想传入的子版块和关键词。 - 代码逻辑漏洞:就算参数传入正确,初始化
ml_subreddit时用的是固定值'handbags',没有使用更新后的search_term变量,导致爬取的版块不会随参数变化。
解决方案
方案1:在命令行中正确运行代码
保留命令行传参逻辑,直接在终端执行代码并传入自定义参数:
python 你的脚本文件名.py 目标子版块 目标关键词
示例(爬取fashion版块的leather相关帖子):
python reddit_scraper.py fashion leather
同时修复版块初始化逻辑,将:
ml_subreddit = reddit.subreddit('handbags')
修改为:
ml_subreddit = reddit.subreddit(search_term)
方案2:适配Jupyter环境运行
如果要在Jupyter里运行,直接去掉sys.argv逻辑,手动定义参数:
# 直接修改此处的子版块和关键词 search_term = 'fashion' keyword = 'leather' ml_subreddit = reddit.subreddit(search_term) print("Subreddit: ", search_term) print("Keyword: ", keyword) resp = ml_subreddit.search(keyword, limit=10) for submission in resp: print("=ID: ", submission.id) print(" Title: ", submission.title.encode('ascii', 'ignore')) print(" Score: ", submission.score) print(" URL: ", submission.url.encode('ascii', 'ignore')) print(" Text: ", submission.selftext[:120].encode('ascii', 'ignore'))
也可以用Jupyter交互输入获取参数:
search_term = input("请输入目标子版块:") or 'handbags' keyword = input("请输入搜索关键词:") or 'color' ml_subreddit = reddit.subreddit(search_term) # 后续代码不变
内容的提问来源于stack exchange,提问作者Kdiddledoo
相关产品推荐
相关产品推荐

