如何用snscrape按OR逻辑抓取指定标签列表的推文?
使用snscrape按OR逻辑抓取多标签推文
要实现按OR逻辑抓取自定义标签列表的推文,核心是构建符合Twitter搜索语法的查询字符串,再用snscrape执行抓取,具体步骤如下:
1. 构建OR逻辑的搜索查询
Twitter的搜索语法里,OR逻辑必须用大写的OR,带空格的标签(比如data analytics)需要用双引号包裹,确保搜索的是完整短语。我们可以通过字符串拼接快速生成查询:
- 遍历你的标签列表,给每个标签加上双引号
- 用
OR把所有带引号的标签连接起来
2. 执行抓取
用snscrape的TwitterSearchScraper传入构建好的查询,就能获取包含任意指定标签的推文。如果需要结合你已经会用的位置、特定短语等条件,直接把对应的搜索语法追加到查询后面即可(多个条件默认是AND逻辑)。
完整代码示例
import snscrape.modules.twitter as sntwitter # 自定义标签列表 hashtags = ('data analytics', 'data science', 'machine learning') # 生成OR逻辑的搜索查询 search_query = ' OR '.join([f'"{tag}"' for tag in hashtags]) # 可选:追加位置/短语等其他条件(比如限制伦敦5英里范围内) # search_query += ' near:"London" within:5mi' # 抓取前100条推文(可自行调整数量) for idx, tweet in enumerate(sntwitter.TwitterSearchScraper(search_query).get_items()): if idx >= 100: break # 打印推文内容,也可保存日期、作者ID等字段 print(f"推文{idx+1}: {tweet.content}")
说明
- 生成的查询字符串是
"data analytics" OR "data science" OR "machine learning",符合Twitter的搜索规则,能匹配包含任意一个、多个或全部标签的推文。 - 如果你的标签是单个单词(比如
datascience),可以不用加双引号,但带空格的标签必须加,否则会被拆分成独立关键词搜索。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

