如何使用Twint仅抓取英文推文?已尝试语法c>lang = 'en'仍获取非英文推文
解决Twint无法精准抓取英文推文的问题
我之前也碰到过Twint的lang参数过滤不彻底的情况,Twitter的语言标记有时候确实不太靠谱,结合几个方法可以解决这个问题:
1. 确认Twint参数的正确写法
首先检查你是否用对了语言参数的语法:
- 如果是Python API,正确的赋值应该是:
import twint c = twint.Config() c.Lang = "en" # 注意是大写的Lang,不是小写lang # 其他配置(如搜索关键词、输出格式等) twint.run.Search(c) - 如果是命令行,应该用:
twint -q "你的搜索关键词" --lang en
你之前写的c>lang = 'en'看起来像是语法错误,这可能是参数不生效的核心原因之一。
2. 抓取后用语言检测库二次过滤
因为Twitter的lang字段偶尔会标记错误(比如混合语言推文、自动标记失误),可以用langdetect库对抓取到的推文内容做二次校验:
- 先安装库:
pip install langdetect - 过滤示例:
from langdetect import detect # 假设你已经抓取到了推文列表tweets english_tweets = [] for tweet in tweets: try: # 检测推文内容的语言 if detect(tweet.tweet) == 'en': english_tweets.append(tweet) except: # 跳过无法检测语言的异常推文 continue
这个方法能有效过滤掉那些被错误标记为英文的非英文内容。
3. 更新Twint到最新版本
旧版本的Twint可能存在语言过滤的bug,执行以下命令更新:
pip install --upgrade twint
不少用户反馈更新后lang参数的过滤精度有明显提升。
4. 结合关键词或地区辅助过滤
如果你的抓取目标有特定关键词,可以在搜索时加入英文关键词,或者限定英文地区(比如c.Near = "United States"),进一步缩小范围:
c.Search = "tech innovation" # 英文关键词 c.Near = "New York" # 英文地区
内容的提问来源于stack exchange,提问作者Akshada Bhandari
相关产品推荐
相关产品推荐

