Twitter API 查询标签

Twitter API query hashtag

我正在尝试使用 Twitter api.

收集具有特定主题标签的推文数据

我使用下面的 python 代码。

https://github.com/twitterdev/Twitter-API-v2-sample-code/blob/master/Recent-Search/recent_search.py

看起来确实有效。

但是,当我将第 14 行从

query = "from:twitterdev -is:retweet" 

query = "#apple"

它不再起作用了。 错误信息如下。

Exception: (400, '{"errors":[{"parameters":{"query":[""]},"message":"Invalid \'query\':\'\'. \'query\' must be a non-empty string"}],"title":"Invalid Request","detail":"One or more parameters to your request was invalid.","type":"https://api.twitter.com/2/problems/invalid-request"}')

好像和#有关。我该如何解决这个问题?

很难解决这里可能发生的问题。几个建议。

  1. 查看 this page
  2. 在第 39 行中,再次从 response.json() 和 运行 代码中删除 .json()。完成后,您可以在 Python.
  3. 的交互式命令行中对代码进行故障排除

要清楚,请转到您的终端,输入 Python,然后一一加载您的函数(main() 除外)。然后逐行浏览 main() 代码中的代码。在你 运行 json_response = connect_to_endpoint(url, headers) 你应该仍然得到一个错误,但是,你可以使用 response.request 对象中的对象来查看发生了什么。比如做完以上然后运行ning...

response = connect_to_endpoint(url, headers)

...然后您可以执行 response.request.url 以打印发送到 Twitter 的完整 URL 并将其与 Building 查询中找到的形式进行比较 上面链接的页面。

查看第二个答案 here 以获得可用内容的详细列表。您也可以(在 运行ning response = connect_to_endpoint(url, headers) 之后)简单地在您的终端中键入 response.request.(包括两个句点),然后按几次 shift 键来创建您的终端打印这些选项。

尝试:

query = "%23apple"

在Twitter的示例代码中,变量query被用作URL的参数。 URL 的参数中不允许使用某些字符(如 /?# 等)。

URLhttps://api.twitter.com/2/tweets/search/recent?query=#apple无效。 %23是#的编码值。 URL 将如下所示:https://api.twitter.com/2/tweets/search/recent?query=%23apple.

推特 API 然后可以 %23 翻译回 #

这里有一个深入的解释:https://www.w3schools.com/tags/ref_urlencode.ASP