You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取提及我的推文中的链接并导出指定字段为CSV

需求说明

提取所有他人提及我账号的推文中包含的URL。

遇到的问题

推文中带有URL时,无法正常获取完整的推文文本;仅含纯文本的推文可以正常提取内容。

各库测试情况

Tweepy库测试代码

auth = tweepy.OAuthHandler(apiKey, apiSecretKey)
auth.set_access_token(accesToken, secretToken)
api = tweepy.API(auth, wait_on_rate_limit= True, wait_on_rate_limit_notify= True)
search_words = "@LoremIp03500003 -filter:retweets"
tweets =tweepy.Cursor(api.search, q=search_words, tweet_mode="extended").items(20)
users = [[tweet.full_text, tweet.id] for tweet in tweets]
users

Twython库测试代码

results = t.search(q="LoremIp03500003 -filter:retweets", tweet_mode='extended')
all_tweets = results['statuses']
    for tweet in all_tweets:
      print(tweet ['full_text'])

Twitter库测试代码

api = twitter.Api(apiKey,
                  apiSecretKey,
                  accesToken,
                  secretToken)
api.GetSearch(term="@LoremIp03500003")
最终目标

将所有提及我账号的推文导出为CSV文件,包含如下字段:

  • 提及我的用户账号名
  • 用户ID
  • 推文文本
  • 推文中包含的URL(如有)
  • 推文ID

解决方案

该问题的核心原因是Twitter v1.1 API默认不会将推文内的URL直接填充到文本字段中,需要显式开启实体参数后从entities字段提取相关内容,以下是基于Tweepy可实现最终目标的完整代码:

import tweepy
import csv

# 替换为自己的API凭证
apiKey = "你的API Key"
apiSecretKey = "你的API Secret Key"
accesToken = "你的Access Token"
secretToken = "你的Access Token Secret"

auth = tweepy.OAuthHandler(apiKey, apiSecretKey)
auth.set_access_token(accesToken, secretToken)
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

search_words = "@LoremIp03500003 -filter:retweets"
# 增加include_entities参数开启实体提取
tweets = tweepy.Cursor(api.search, q=search_words, tweet_mode="extended", include_entities=True).items(100)

# 写入CSV文件
with open('mentions.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(['用户账号名', '用户ID', '推文文本', '推文URL', '推文ID'])
    for tweet in tweets:
        # 提取所有URL,多URL用逗号分隔
        urls = [url['expanded_url'] for url in tweet.entities['urls']]
        url_str = ','.join(urls) if urls else ''
        # 写入行数据
        writer.writerow([
            tweet.user.screen_name,
            tweet.user.id_str,
            tweet.full_text,
            url_str,
            tweet.id_str
        ])

说明:

  1. 新增的include_entities=True参数会让API返回推文关联的所有实体信息,包括URL、提及账号、话题标签等内容
  2. 从tweet.entities['urls']中提取的expanded_url是完整原始链接,不是Twitter短链接
  3. 使用utf-8-sig编码保存CSV可避免中文乱码问题
  4. ID字段统一使用id_str格式,避免数字过长导致的精度丢失问题

内容的提问来源于stack exchange,提问作者Merinoide

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:15:01