为何使用snscrape仅能抓取100条推文?如何抓取更多?
解决Twitter用户5000条推文抓取问题
问题根源
你把命令行工具snscrape的指令和Python代码混在一起执行了,这才导致语法错误。snscrape是单独在终端运行的命令,不属于Python代码;后面的pd.read_json相关代码才是Python逻辑,必须分开执行。另外抓取1000条失败,大概率是触发了Twitter的请求速率限制。
修正步骤
1. 单独执行snscrape抓取命令(终端/命令提示符中运行)
打开电脑的终端(Windows用命令提示符/PowerShell,Mac/Linux用终端),直接输入以下命令运行,不要将这段命令放到Python脚本或代码单元格里:
snscrape --jsonl --progress --max-results 5000 twitter-search "from:jack" > user-tweets.json
- 若中途卡住或报错,说明触发了速率限制,可以分批次抓取:比如先抓2000条,再用
--since参数指定上次抓取的最后一条推文的发布时间,用>>追加内容到文件,示例:snscrape --jsonl --progress --max-results 3000 twitter-search "from:jack since:2023-01-01" >> user-tweets.json
2. 用Python读取抓取结果
打开Python环境(如Jupyter Notebook、PyCharm或Python交互窗口),单独运行以下代码:
import pandas as pd # 必须先导入pandas库,之前的代码遗漏了这一步 tweets_df = pd.read_json('user-tweets.json', lines=True) tweets_df
额外优化建议
- 为避免触发反爬,可添加请求间隔参数,让每次请求间隔2秒:
snscrape --jsonl --progress --sleep 2 --max-results 5000 twitter-search "from:jack" > user-tweets.json - 确保snscrape是最新版本,终端运行
pip install --upgrade snscrape完成升级,老版本可能存在兼容性bug。
内容的提问来源于stack exchange,提问作者Tom Maxwell
相关产品推荐
相关产品推荐

