【问题标题】:is there any way i can download full text in tweeter using python有什么方法可以使用 python 在 twitter 中下载全文
【发布时间】:2020-08-22 06:00:01
【问题描述】:

我正在尝试根据关键字下载推文,这是我正在使用的一段代码,但问题是我无法下载整个推文。它只显示前 140 个字符。如何下载完整的推文?

import tweepy
import csv
import pandas as pd
####input your credentials here
consumer_key =''
consumer_secret =''
access_token =''
access_token_secret=''

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
#####United Airlines
# Open/Create a file to append data
csvFile = open(r'C:\Users\iiit\Desktop\tweets.csv', 'a')
#Use csv Writer
csvWriter = csv.writer(csvFile)

for tweet in tweepy.Cursor(api.search,q="#hashtag",count=1000,
                           lang="en",
                           since="2020-04-14").items():
    print (tweet.created_at, tweet.text)
    csvWriter.writerow([tweet.created_at, tweet.text.encode('utf-8')])

【问题讨论】:

    标签: python-3.x file download full-text-search tweepy


    【解决方案1】:

    根据官方tweepy文档:

    返回状态对象(推文)的tweepy.API 方法接受一个参数,该参数可以是兼容模式或扩展模式。默认参数是兼容模式。兼容模式将推文截断为 140 个字符。这就是你的程序当前正在做的事情。

    如果你想要整个文本,你应该使用扩展模式。通过 kwag tweet_mode="extended" 声明您打算使用的模式。然后用tweet.full_text代替tweet.text

    您的新代码应如下所示;

    for tweet in tweepy.Cursor(api.search,
        q="#hashtag", count=5, lang="en",
        since="2020-05-07", tweet_mode="extended").items():
        print (tweet.created_at, tweet.full_text)
        csvWriter.writerow([tweet.created_at, tweet.full_text.encode('utf-8')])
    

    我还没有测试过,但它应该可以工作。

    【讨论】:

      【解决方案2】:

      据我所知,有一项政策是兼容模式将推文截断为 140 个字符。但是这个可用于 StreamListener 的 Status 事件处理程序会打印 Tweet 的全文,或者如果它是 Retweet,则将 Retweet Tweet 的全文作为其文档。

        def on_status(self, status):
              if hasattr(status, "retweeted_status"):  # Check if Retweet
                  try:
                      print(status.retweeted_status.extended_tweet["full_text"])
                  except AttributeError:
                      print(status.retweeted_status.text)
              else:
                  try:
                      print(status.extended_tweet["full_text"])
                  except AttributeError:
                      print(status.text)
      

      这可能对你有帮助。here

      【讨论】:

      • 嗨,哈山 - 米勒格雷西 - 看起来令人印象深刻。是的:我认为这对这里很有帮助。
      • 太好了。谢谢。
      【解决方案3】:

      据我所知,有一项政策是兼容模式将推文截断为 140 个字符。将转推推文的全文作为他们的文档。

      def on_status(self, status):
          if hasattr(status, "retweeted_status"):  # Check if Retweet
              try:
                  print(status.retweeted_status.extended_tweet["full_text"])
              except AttributeError:
                  print(status.retweeted_status.text)
          else:
              try:
                  print(status.extended_tweet["full_text"])
              except AttributeError:
                  print(status.text)
      

      这可能对你有帮助。here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-20
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多