Python中不使用Selenium通过关键词获取所有推文的方法有哪些?
Python 无Selenium获取关键词相关推文的高效方案
- 方案1:使用Twitter官方API的Python封装库
官方API的速率比爬虫高很多,合规性更好,Python端常用Tweepy库,你可以申请开发者权限后,直接调用搜索接口按关键词拉取推文,支持拉取历史和实时数据,单请求最多可以返回100条,速率限制远高于模拟浏览器的爬取效率。
基础使用示例如下:
如果需要拉取超过7天的历史推文,需要申请学术研究权限的API密钥。import tweepy # 填入你申请的开发者密钥 bearer_token = "你的Bearer Token" client = tweepy.Client(bearer_token=bearer_token) # 按关键词搜索推文,max_results可调整,单请求最高100 response = client.search_recent_tweets(query="你的关键词", max_results=100, tweet_fields=["created_at", "author_id"]) for tweet in response.data: print(tweet.id, tweet.created_at, tweet.text) - 方案2:使用第三方非官方的Twitter数据封装库
如果你无法申请官方开发者权限,可以使用无需身份验证的第三方Python库,这类库通过解析公开的Twitter搜索页面接口实现数据抓取,不需要模拟浏览器,速度是Selenium的5-10倍。常用的库为snscrape,不需要申请密钥,直接调用即可。
基础使用示例如下:
使用这类非官方库要控制请求频率,避免被IP限流。import snscrape.modules.twitter as sntwitter tweets = [] # 关键词、时间范围可以自行调整 query = "你的关键词 since:2023-01-01 until:2023-12-31" for i, tweet in enumerate(sntwitter.TwitterSearchScraper(query).get_items()): # 限制爬取数量,去掉该判断则爬取所有符合条件的推文 if i > 1000: break tweets.append([tweet.date, tweet.id, tweet.content, tweet.user.username]) - 额外优化建议
如果你需要大规模爬取,可以搭配IP代理池使用,同时设置合理的请求间隔,进一步提升稳定性。爬取到的数据建议直接存入数据库或者本地文件,避免内存溢出。
内容的提问来源于stack exchange,提问作者Yusuf Özkan
相关产品推荐
相关产品推荐

