Невозможно получить те же результаты запросов из Twitter Web с моего локального ПК и экземпляра AWS EC2 - PullRequest
0 голосов
/ 24 октября 2019

Я хочу быть в состоянии очистить актуальные темы Twitter.

Конечно, естественный способ сделать это - использовать API Twitter. Тем не менее, большинство Тенденций не имеют Tweet_count , что является ключевым для меня.

Так что я решил почистить сайт Twitter, и это был беспорядок.

Во-первых, я просто пошел после https://twitter.com/i/trends, и он работал нормально и до сих пор работает на моем локальном компьютере. Затем я попытался настроить скрипт на своем экземпляре AWS EC2, но я не получил никаких результатов. Это упрощенная версия кода:

url = 'http://twitter.com/i/trends'
r = requests.get(url)
html = r.json()['module_html']
soup = BeautifulSoup(html, 'html.parser')
trends_list = soup.find_all('span', {'class':'u-linkComplex-target trend-name'})
tweet_volume_list = soup.findAll('div', {'class':'js-nav trend-item-stats js-ellipsis'})

и, как я уже сказал, он работал нормально. Однако, если я запускаю этот же код на своем сервере Linux в AWS, результат r.content будет '{}'.

Так что я попытался перейти с mobile.twitter.com/i/trends и получил похожую проблему. Я нашел с DevTools на приватной сессии, что твиттер отправляется на конечную точку https://api.twitter.com/2/guide.json внутри, и это реальный ресурс, который возвращает данные, которые я ищу (тренды и объем твита). Однако, что бы я ни делал, с requests я не смог получить к нему доступ с python. Я пытался использовать тот же headers и тот же params, что и браузер, но безрезультатно.

Итак, я перехожу на селен, и, как и раньше, я получаю данные локально, но не фактические данные TT на сервере. Так что на данный момент я довольно потерян. Я не знаю достаточно веб-разработчика, чтобы точно понять, является ли это проблемой с cookie или чем, и как ее исправить.

TL; DR : я хочу проанализировать актуальные тренды Twitter с помощьюPython, но он не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...