Python中如何抓取Twitter一个话题下的内容,比如美国大选这个话题?
我看了一下 https://github.com/bear/python-twitter 这个官方的 API, 似乎没有这个功能。
然后我想用 selenium 抓似乎有限制, 只能看到很少的一部分。
Python中如何抓取Twitter一个话题下的内容,比如美国大选这个话题?
2 回复
import snscrape.modules.twitter as sntwitter
import pandas as pd
def scrape_twitter_topic(query, max_tweets=100):
"""
抓取Twitter话题内容
Args:
query: 搜索查询字符串,例如"美国大选 lang:zh"
max_tweets: 最大推文数量
"""
tweets_list = []
# 使用snscrape搜索推文
for i, tweet in enumerate(
sntwitter.TwitterSearchScraper(query).get_items()
):
if i >= max_tweets:
break
tweets_list.append({
'date': tweet.date,
'id': tweet.id,
'content': tweet.content,
'username': tweet.user.username,
'like_count': tweet.likeCount,
'retweet_count': tweet.retweetCount,
'reply_count': tweet.replyCount
})
# 创建DataFrame
df = pd.DataFrame(tweets_list)
return df
# 使用示例
if __name__ == "__main__":
# 搜索"美国大选"相关推文,限制中文内容,抓取50条
query = "美国大选 lang:zh"
df_tweets = scrape_twitter_topic(query, max_tweets=50)
# 显示前5条结果
print(df_tweets.head())
# 保存到CSV文件
df_tweets.to_csv('us_election_tweets.csv', index=False, encoding='utf-8-sig')
关键点说明:
- 使用snscrape库:这是目前最稳定的Twitter数据抓取方案,不需要API密钥
- 查询语法:
"美国大选":搜索关键词lang:zh:限制中文推文(可选)- 其他可用参数:
since:2023-01-01 until:2023-12-31(时间范围)
- 获取的数据包括:发布时间、推文ID、内容、用户名、点赞/转发/回复数
安装依赖:
pip install snscrape pandas
注意事项:
- Twitter的访问限制可能变化,建议合理设置抓取频率
- 商业用途需遵守Twitter开发者条款
一句话建议:用snscrape配合查询语法直接抓,比API更省事。
search/tweets.json

