#python #web-scraping
Вопрос:
я пишу этот код, и я хочу получить некоторую информацию со страницы twitter, и я получаю пустую
import requests
from bs4 import BeautifulSoup
import csv
from itertools import zip_longest
result = requests.get("https://twitter.com/search?q=BTCamp;src=typed_queryamp;f=live")
src = result.content
soup = BeautifulSoup(src, "lxml")
#print(soup)
tweets = soup.find_all("a",{"css-901oao css-16my406 r-1k78y06 r-bcqeeo r-qvutc0"})
print(tweets)
Комментарии:
1. Вы должны использовать такие модули, как tweepy . Кроме того, вы должны подать заявку на лицензию разработчика в twitter и получить учетные данные, такие как ключи API и т.д., Из twitter
Ответ №1:
Вы можете использовать этот код для получения данных. Более того, данные возвращаются в формате JSON, так что вам даже не нужно использовать BeautifulSoup.
Код
import requests
import json
headers = {
'authority': 'twitter.com',
'pragma': 'no-cache',
'cache-control': 'no-cache',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'x-twitter-client-language': 'en',
'x-csrf-token': 'bdf13388fcc19da71adc494b1f7f0b67',
'sec-ch-ua-mobile': '?0',
'authorization': 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs=1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36',
'x-guest-token': '1409186325543092227',
'x-twitter-active-user': 'yes',
'accept': '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://twitter.com/search?q=BTCamp;src=typed_queryamp;f=live',
'accept-language': 'en-US,en;q=0.9',
'cookie': 'personalization_id="v1_22YA 2q/xRm1KgF/0U66Qw=="; guest_id=v1:162480151777727574; ct0=bdf13388fcc19da71adc494b1f7f0b67; _sl=1; _twitter_sess=BAh7CSIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%0ASGFzaHsABjoKQHVzZWR7ADoPY3JlYXRlZF9hdGwrCDent016AToMY3NyZl9p%0AZCIlMjk3MTY3MTIyZjRlZTYxMDdhMDhmMzgwNmVlNGRlOTg6B2lkIiU1Mjll%0AODBkMjI0YTUwYzVjZGY1NGViNTNiM2JmNWZiNg%3D%3D--b7f16af5121c08a00f8216aeff1cd54d00c2f14b; _ga=GA1.2.1976020620.1624801520; _gid=GA1.2.1056783113.1624801520; gt=1409186325543092227',
}
params = (
('include_profile_interstitial_type', '1'),
('include_blocking', '1'),
('include_blocked_by', '1'),
('include_followed_by', '1'),
('include_want_retweets', '1'),
('include_mute_edge', '1'),
('include_can_dm', '1'),
('include_can_media_tag', '1'),
('skip_status', '1'),
('cards_platform', 'Web-12'),
('include_cards', '1'),
('include_ext_alt_text', 'true'),
('include_quote_count', 'true'),
('include_reply_count', '1'),
('tweet_mode', 'extended'),
('include_entities', 'true'),
('include_user_entities', 'true'),
('include_ext_media_color', 'true'),
('include_ext_media_availability', 'true'),
('send_error_codes', 'true'),
('simple_quoted_tweet', 'true'),
('q', 'BTC'),
('tweet_search_mode', 'live'),
('count', '20'),
('query_source', 'typed_query'),
('pc', '1'),
('spelling_corrections', '1'),
('ext', 'mediaStats,highlightedLabel'),
)
response = requests.get('https://twitter.com/i/api/2/search/adaptive.json', headers=headers, params=params)
json_text = json.loads(response.content)
tweet = json_text.get("globalObjects").get('tweets')
for i in tweet:
print(tweet[i].get('full_text'))
Результат
@Zenon_Network Should trust this project! The dev always hard work to growup Zenon_Network!! Send it boysss
@Zenon_Network
#NoM #AlphanetBigBang $ZNN $QSR $PP $BTC
U can def see the binance fud impact but we are recovering fast on news sentiment social sentiment not so much #BTC #ETH #Crypto
Alerts before spikes and right as big news drops out of the largest cryto market join us instantly
$BTC $LTC $ETH $ADA $DOGE $XRP $XLM $BIFI $GAJ $FISH $FOX $WOLF $DB $MONO $KENNY $HH $YLD $GEN $DMT $BTU $SAFU $BULL $PUSSY $SSGT $PCAKE $GFARM $SUPER $PINGU $GFI $POLR $FRAX $EOS
@TylerDurden Don't you hold BTC???
...
Комментарии:
1. большое вам спасибо за ваше время, но я получаю этот результат после вставки вашей обратной трассировки кода (последний последний вызов): строка 58, в <модуле> tweet = json_text.get(«globalObjects»).get («твиты») Ошибка атрибута: объект ‘NoneType’ не имеет атрибута ‘get’