tweepy.Cursor returns 与我选择的查询不相关的搜索结果
tweepy.Cursor returns unrelated search results to the query I selected
作为我硕士学位的一部分,我需要从 Twitter 收集数据用于未来的机器学习模型。
有什么问题?
我正在尝试获取带有给定主题标签 (#) 的推文,一些非常简单的东西,例如 #climatechange,所以我从堆栈溢出的其他问题中了解到,我需要添加 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 年 1 月 1 日到 2020 年 10 月 1 日,每条包含字符串“#climatechange”的文本,我取了 100 条。
现在我打开 JSON 文件,我在 JSON 文件中看到一些不相关的推文, 不包含“#climatechange”文本。我决定检查我从 tweepy 收到的整个对象,也没有提到任何地方的“#climatechange”字符串。
例如:
"text": "RT @BetteMidler: The #GOP cannot govern. Remember they
presided over #9-11, the #IraqWar, the 2008 #GreatRecession, &
when they returned t\u2026"
"text": "RT @DeWayne_Fulton: #Texas can lead the way in energy
innovation--safe, clean, efficient, renewable
energy.\n\n@Lizzie4Congress knows that th\u2026",
总结到现在:
- 我根据特定条件从 Twitter 获取推文。
- 我将它们保存到文件系统。
- 我打开 JSON 文件,大约 10% 的推文 中没有“#climatechange” 字符串。
我尝试过什么来解决这个问题?
当然,我尝试做的第一件事就是查阅 Cursor 对象的 tweepy 官方文档,但在那里我没有找到任何有用的东西,我什至没有找到 q 参数或其他任何东西,尽管许多堆栈溢出解决方案都使用这些参数。
http://docs.tweepy.org/en/v3.9.0/cursor_tutorial.html
好像文档没有写完整或者遗漏了很多东西,文档哪里出错了?
如果有人也有这个问题,我在 Stack Overflow 和其他一些网站上进行了搜索,但没有找到任何相关信息。
我在 Whosebug 上搜索了 tweepy.Cursor 解决方案来调整我的参数,我尝试添加一些参数,删除一些但仍然没有。
我试着去 tweepy.Cursor GitHub 代码来理解它是如何工作的,但我没有完全理解它是如何工作的,所以没有成功。
据我所知,一旦我用一些字符串指定了“q”参数,它将搜索包含此查询参数的字符串,并且 return 仅搜索有效的推文,但正如我所见,它存在一些问题并且它 return 条不相关的推文。
我很乐意得到一些帮助,或者如果你能告诉我我错过了什么,我敢肯定这是我错过的一些小事,这就是我没有得到正确数据的原因。
谢谢。
看起来无关的推文很可能被截断为 140 个字符,并且您搜索的文本位于“扩展”推文部分。如果您将 tweet_mode=extended
添加到 api.search
调用,那么它应该在扩展推文的 full_text
字段中检索完整的推文文本。
您还应注意,旧版标准 Twitter 搜索 API(这就是 api.search
所调用的内容)仅支持搜索过去 7 天内的推文。对于更长的时间,您将需要使用 Twitter premium 30 天或 full-archive 搜索 APIs.
作为我硕士学位的一部分,我需要从 Twitter 收集数据用于未来的机器学习模型。
有什么问题?
我正在尝试获取带有给定主题标签 (#) 的推文,一些非常简单的东西,例如 #climatechange,所以我从堆栈溢出的其他问题中了解到,我需要添加 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 年 1 月 1 日到 2020 年 10 月 1 日,每条包含字符串“#climatechange”的文本,我取了 100 条。 现在我打开 JSON 文件,我在 JSON 文件中看到一些不相关的推文, 不包含“#climatechange”文本。我决定检查我从 tweepy 收到的整个对象,也没有提到任何地方的“#climatechange”字符串。
例如:
"text": "RT @BetteMidler: The #GOP cannot govern. Remember they presided over #9-11, the #IraqWar, the 2008 #GreatRecession, & when they returned t\u2026"
"text": "RT @DeWayne_Fulton: #Texas can lead the way in energy innovation--safe, clean, efficient, renewable energy.\n\n@Lizzie4Congress knows that th\u2026",
总结到现在:
- 我根据特定条件从 Twitter 获取推文。
- 我将它们保存到文件系统。
- 我打开 JSON 文件,大约 10% 的推文 中没有“#climatechange” 字符串。
我尝试过什么来解决这个问题?
当然,我尝试做的第一件事就是查阅 Cursor 对象的 tweepy 官方文档,但在那里我没有找到任何有用的东西,我什至没有找到 q 参数或其他任何东西,尽管许多堆栈溢出解决方案都使用这些参数。 http://docs.tweepy.org/en/v3.9.0/cursor_tutorial.html 好像文档没有写完整或者遗漏了很多东西,文档哪里出错了?
如果有人也有这个问题,我在 Stack Overflow 和其他一些网站上进行了搜索,但没有找到任何相关信息。
我在 Whosebug 上搜索了 tweepy.Cursor 解决方案来调整我的参数,我尝试添加一些参数,删除一些但仍然没有。
我试着去 tweepy.Cursor GitHub 代码来理解它是如何工作的,但我没有完全理解它是如何工作的,所以没有成功。
据我所知,一旦我用一些字符串指定了“q”参数,它将搜索包含此查询参数的字符串,并且 return 仅搜索有效的推文,但正如我所见,它存在一些问题并且它 return 条不相关的推文。
我很乐意得到一些帮助,或者如果你能告诉我我错过了什么,我敢肯定这是我错过的一些小事,这就是我没有得到正确数据的原因。
谢谢。
看起来无关的推文很可能被截断为 140 个字符,并且您搜索的文本位于“扩展”推文部分。如果您将 tweet_mode=extended
添加到 api.search
调用,那么它应该在扩展推文的 full_text
字段中检索完整的推文文本。
您还应注意,旧版标准 Twitter 搜索 API(这就是 api.search
所调用的内容)仅支持搜索过去 7 天内的推文。对于更长的时间,您将需要使用 Twitter premium 30 天或 full-archive 搜索 APIs.