Ну, на самом деле сайт генерирует перенаправление за CloudFlare
, а затем он загружается динамически через JavaScript
после загрузки страницы, поэтому мы можем использовать несколько подходов, таких как selenium
и requests_html
, но я упомяну для вас самое быстрое решение для этого, поскольку мы будем рендерить JS
на лету:)
import cloudscraper
from bs4 import BeautifulSoup
scraper = cloudscraper.create_scraper()
html = scraper.get("https://www.trackcorona.live/").text
soup = BeautifulSoup(html, 'html.parser')
confirmed = soup.find("a", id="valueTot").text
print(confirmed)
Вывод:
110981
Подсказка для 503
response code
:
По сути, этот код ссылается на service unavailable
.
С технической точки зрения отправленный вами запрос GET
не может быть обработан. причина в том, что запрос застрял между receiver
запроса, который является https://www.trackcorona.live/, где он обрабатывает его к другому источнику того же HOST
, который https://www.trackcorona.live/? cf_chl_jschl_tk =
Где __cf_chl_jschl_tk__=
содержит token
для аутентификации.
Поэтому вы обычно должны следовать своему коду на сервер host
с необходимые данные.
Примерно так: end
url:
import requests
from bs4 import BeautifulSoup
def Main():
with requests.Session() as req:
url = "https://www.trackcorona.live"
r = req.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
redirect = f"{url}{soup.find('form', id='challenge-form').get('action')}"
print(redirect)
Main()
Вывод:
https://www.trackcorona.live/?__cf_chl_jschl_tk__=575fd56c234f0804bd8c87699cb666f0e7a1a114-1583762269-0-AYhCh90kwsOry_PAJXNLA0j6lDm0RazZpssum94DJw013Z4EvguHAyhBvcbhRvNFWERtJ6uDUC5gOG6r64TOrAcqEIni_-z1fjzj2uhEL5DvkbKwBaqMeIZkB7Ax1V8kV_EgIzBAeD2t6j7jBZ9-bsgBBX9SyQRSALSHT7eXjz8r1RjQT0SCzuSBo1xpAqktNFf-qME8HZ7fEOHAnBIhv8a0eod8mDmIBDCU2-r6NSOw49BAxDTDL57YAnmCibqdwjv8y3Yf8rYzm2bPh74SxVc
Теперь можно вызывать конец URL
так что вам нужно передать необходимые Form-Data
:
что-то вроде этого:
def Main():
with requests.Session() as req:
url = "https://www.trackcorona.live"
r = req.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
redirect = f"{url}{soup.find('form', id='challenge-form').get('action')}"
data = {
'r': 'none',
'jschl_vc': 'none',
'pass': 'none',
'jschl_answer': 'none'
}
r = req.post(redirect, data=data)
print(r.text)
Main()
здесь вы получите text
без желаемых значений. потому что ваши значения отображаются через JS
.