如何在Python Tweepy Twitter爬虫中整合循环批量爬取多用户推文
批量爬取多用户推文并保存为CSV的实现方案
核心实现步骤
- 定义包含所有目标用户名的列表
- 遍历列表逐个执行爬取逻辑
- 合并所有用户的推文数据
- 将合并结果导出为CSV文件
修正后的完整代码
import tweepy import time import pandas as pd # 替换为你的API密钥 api_key = '' api_secrets = '' access_token = '' access_secret = '' # 认证并初始化API auth = tweepy.OAuthHandler(api_key, api_secrets) auth.set_access_token(access_token, access_secret) api = tweepy.API(auth, wait_on_rate_limit=True) # 目标用户列表(替换为你的100个用户名) user_list = ["markrutte", "example_user1", "example_user2"] no_of_tweets = 3200 # 初始化空DataFrame存储所有数据 all_tweets_df = pd.DataFrame(columns=["Date Created", "Number of Likes", "Source of Tweet", "Tweet", "Username"]) # 批量爬取逻辑 for username in user_list: try: print(f"正在爬取用户 {username} 的推文...") # 获取用户推文 tweets = api.user_timeline(screen_name=username, count=no_of_tweets) # 提取推文属性,额外添加用户名用于区分 attributes_container = [ [tweet.created_at, tweet.favorite_count, tweet.source, tweet.text, username] for tweet in tweets ] # 转换为DataFrame并追加到总数据 user_tweets_df = pd.DataFrame(attributes_container, columns=all_tweets_df.columns) all_tweets_df = pd.concat([all_tweets_df, user_tweets_df], ignore_index=True) print(f"用户 {username} 爬取完成,共获取 {len(tweets)} 条推文") except BaseException as e: print(f"爬取用户 {username} 失败: {str(e)}") time.sleep(3) # 保存为CSV文件(utf-8-sig避免Windows下乱码) all_tweets_df.to_csv("多用户推文数据.csv", index=False, encoding='utf-8-sig') print("所有数据已保存到 多用户推文数据.csv")
关键细节说明
- 用户名标识:在数据中新增
Username列,方便后续区分不同用户的推文 - 异常隔离:每个用户的爬取逻辑单独捕获异常,避免单个用户爬取失败导致整个批量任务中断
- 数据合并:使用
pd.concat合并多个用户的DataFrame,ignore_index=True重置索引避免重复 - CSV编码:设置
encoding='utf-8-sig'解决Windows系统下打开CSV时的中文乱码问题
内容的提问来源于stack exchange,提问作者Chiaro Scuro
相关产品推荐
相关产品推荐

