如何使用snscrape仅过滤英文Twitter推文?
仅筛选英文Cyberpunk推文的两种解决方案
方法1:通过搜索Query直接限定语言(推荐)
Twitter搜索支持lang:en语法,可直接指定只返回英文推文。这种方式效率更高,因为Twitter会在搜索阶段就过滤非英文内容,无需后续额外处理。
修改后的代码如下:
import snscrape.modules.twitter as sntwitter import pandas as pd # 在Query中添加lang:en限定英文内容 query = "Cyberpunk lang:en" tweets = [] limit = 400 for tweet in sntwitter.TwitterSearchScraper(query).get_items(): if len(tweets) == limit: break tweets.append([tweet.date, tweet.user.username, tweet.content]) df = pd.DataFrame(tweets, columns=['Date', 'User', 'Tweet']) df.to_csv('test.csv', index=False)
方法2:获取推文后通过lang属性过滤
如果需要对语言做二次校验,或者Query筛选未生效,可以检查推文对象的lang属性(Twitter自动识别的语言标签),仅当属性值为"en"时才将内容加入列表。
修改后的代码如下:
import snscrape.modules.twitter as sntwitter import pandas as pd query = "Cyberpunk" tweets = [] limit = 400 for tweet in sntwitter.TwitterSearchScraper(query).get_items(): # 先判断语言是否为英文,再检查数量是否达标 if tweet.lang == "en" and len(tweets) < limit: tweets.append([tweet.date, tweet.user.username, tweet.content]) if len(tweets) == limit: break df = pd.DataFrame(tweets, columns=['Date', 'User', 'Tweet']) df.to_csv('test.csv', index=False)
说明:方法1更高效,减少了不必要的数据传输;方法2适合需要额外语言校验的场景,根据需求选择即可。
内容的提问来源于stack exchange,提问作者Mico Tongco
相关产品推荐
相关产品推荐

