Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Cursor将不相关的搜索结果返回到我选择的查询_Python_Twitter_Tweepy_Python Twitter - Fatal编程技术网

Python Cursor将不相关的搜索结果返回到我选择的查询

Python Cursor将不相关的搜索结果返回到我选择的查询,python,twitter,tweepy,python-twitter,Python,Twitter,Tweepy,Python Twitter,作为我硕士学位的一部分,我需要从Twitter上收集数据,用于未来的机器学习模型 有什么问题吗? 我试图用一个给定的标签(#)来获取推文,这是一个非常简单的东西,比如#climatechange,因此我从stack overflow的其他问题中了解到,我需要添加q参数并在那里传递“#climatechange”字符串 代码如下: # Loads JSON Credentials. twitter_credentials_json = load_twitter_credentials('Twitt

作为我硕士学位的一部分,我需要从Twitter上收集数据,用于未来的机器学习模型

有什么问题吗? 我试图用一个给定的标签(#)来获取推文,这是一个非常简单的东西,比如#climatechange,因此我从stack overflow的其他问题中了解到,我需要添加q参数并在那里传递“#climatechange”字符串

代码如下:

# Loads JSON Credentials.
twitter_credentials_json = load_twitter_credentials('TwitterCredentials.json')

# Creates tweepy.API object.
auth = tweepy.OAuthHandler(twitter_credentials_json['consumer_key'], twitter_credentials_json['consumer_secret'])
auth.set_access_token(twitter_credentials_json['access_token'], twitter_credentials_json['access_token_secret'])
api = tweepy.API(auth, wait_on_rate_limit=True)

data_list = []

# Iterates through the required tweets and adds them to the list.
for tweet in tweepy.Cursor(api.search, q="#climatechange", since="2020-01-01", until="2020-10-01").items(100):
  data_list.append(tweet._json)
# Drops everything to the file system.
with open(f"Tweets {get_datetime_as_string()}.json", 'w', encoding='utf8') as outfile:
  outfile.write(json.dumps(data_list))
  outfile.close()
正如你所见,我在Twitter上搜索,从2020-01-01到2020-10-01,我需要包含字符串“#climatechange”的所有文本,我需要100个条目。 现在我打开JSON文件,在JSON文件中看到一些不相关的tweet,不包含“#climatechange”文本。我决定检查我从tweepy收到的整个对象,并且在任何地方都没有提到“#climatechange”字符串

例如:

“文本”:“RT@BetteMidler:#共和党无法执政。记住他们 主持了9-11、伊拉克战争、2008年大萧条& 当他们返回t\u2026“

“文本”:“RT@DeWayne_Fulton:#德克萨斯州可以在能源领域领先。” 创新——安全、清洁、高效、可再生 能量。\n\n@Lizzie4Congress知道th\u2026“

总结到目前为止:

  • 我根据特定条件从twitter上获得推文
  • 我将它们保存到文件系统中
  • 我打开JSON文件,大约10%的tweet中没有“#climatechange”字符串

  • 我是怎么解决这个问题的?
  • 当然,我尝试做的第一件事是查看Cursor对象的tweepy官方文档,但是我在那里没有找到任何有用的东西,我甚至没有找到q参数或其他任何东西,尽管许多堆栈溢出解决方案都使用这些参数。 文档似乎没有完全编写好,或者遗漏了很多东西,文档哪里出了问题

  • 我搜索了Stack Overflow和其他一些网站,如果有人也有这个问题,但我没有找到任何相关的

  • 我在StackOverflow搜索tweepy.Cursor解决方案来调整我的参数,我尝试添加一些参数,删除一些参数,但仍然什么都没有

  • 我试着去tweepy.cursorgithub代码了解它是如何工作的,但我没有完全理解它是如何工作的,所以没有成功


  • 据我所知,一旦我用某个字符串指定“q”参数,它将搜索包含此查询参数的字符串,并仅返回有效的tweet,但在我看来,存在一些问题,它将返回不相关的tweet

    我会很高兴得到一些帮助,或者如果你能告诉我我错过了什么,我肯定我错过了一些小东西,这就是我没有得到正确数据的原因


    谢谢。

    看起来不相关的推文很可能被截断为140个字符,而您搜索的文本位于“扩展”推文部分。如果将
    tweet\u mode=extended
    添加到
    api.search
    调用中,则它应在
    full\u text
    字段中检索扩展tweet的完整tweet文本


    您还应该知道,传统的标准Twitter搜索API(这是
    API.search
    所调用的)只支持在过去7天的tweet内进行搜索。在较长的一段时间内,您将需要使用Twitter premium 30天或完整存档搜索API。

    非常感谢,添加tweet_mode='extended'解决了问题,并返回全文。那么你是说使用Twitter API或使用访问Twitter API的tweepy库只能从当前数据返回7天的推文?我必须购买推特的高级套餐才能获得7天以上的推特?是否有一个API可以接收超过7天的推文?谢谢是的,传统标准搜索最多返回7天的数据。30天和完整存档搜索API都有一个免费层(称为“沙盒”),但这在可用请求数量上是有限的。然而,它可能会帮助你实现更像你想要的。还请注意,premium API以及新的v2 API没有“扩展”推文的概念,因为默认情况下,所有推文都包含全文。