#python #twitter
#python #Twitter
Вопрос:
Я пытаюсь понять, почему я получаю эту ошибку. Этот код взят из онлайн-класса, который я посещаю. Я меняю LOCAL_WOE_ID на идентификатор WOE в моем локальном регионе, и именно тогда я получаю сообщение об ошибке. Если я использую идентификатор для крупного города, кажется, все в порядке.
import pickle
import os
if not os.path.exists('secret_twitter_credentials.pkl'):
Twitter={}
Twitter['Consumer Key'] = '...'
Twitter['Consumer Secret'] = '...'
Twitter['Access Token'] = '...'
Twitter['Access Token Secret'] = '...'
with open('secret_twitter_credentials.pkl','wb') as f:
pickle.dump(Twitter, f)
else:
Twitter=pickle.load(open('secret_twitter_credentials.pkl','rb'))
WORLD_WOE_ID = 1
US_WOE_ID = 23424977
LOCAL_WOE_ID=2344925
# Prefix ID with the underscore for query string parameterization.
# Without the underscore, the twitter package appends the ID value
# to the URL itself as a special case keyword argument.
world_trends = twitter_api.trends.place(_id=WORLD_WOE_ID)
us_trends = twitter_api.trends.place(_id=US_WOE_ID)
local_trends = twitter_api.trends.place(_id=LOCAL_WOE_ID)
Я получаю эту ошибку.
TwitterHTTPError: Twitter sent status 404 for URL: 1.1/trends/place.json using parameters: (id=2344925amp;oauth_consumer_key=...amp;oauth_nonce=...amp;oauth_signature_method=HMAC-SHA1amp;oauth_timestamp=1553037060amp;oauth_token=...amp;oauth_version=1.0amp;oauth_signature=...)
details: {'errors': [{'code': 34, 'message': 'Sorry, that page does not exist.'}]}
Ответ №1:
Проблема, по-видимому, связана с тем, что LOCAL_WOE_ID
из 2344925 недопустимо для Twitter API.
Twitter предоставляет другой API twitter.trends.available()
, который предоставляет список всех доступных поддерживаемых WOEIDs. Документы API находятся по адресу: https://developer.twitter.com/en/docs/trends/locations-with-trending-topics/api-reference/get-trends-available.html
2344925 НЕ отображается в этом списке (хотя он найден в некоторых других поисковых системах WOEID, напримерhttps://www.flickr.com/places/info/2344925 ), несоответствие, предположительно, связано с Yahoo! в настоящее время не полностью поддерживает их данные «Где на Земле» (https://en.wikipedia.org/wiki/WOEID ).
Ответ №2:
Я беру тот же класс и получаю ту же ошибку.
Я нашел обходной путь. Поскольку Yahoo больше не выдает WOEID, и вам нужно использовать его только для приложения Twitter, вы можете найти ближайший к вам город из списка таким образом; запустите
twitter_api.trends.available()
в вашем ноутбуке jupyter (конечно, после установки и импорта twitter). Это даст вам список городов, и вы можете ctrl f для своего.