Невозможно прочитать запросы HTML-ответ от URL - PullRequest
0 голосов
/ 03 декабря 2018

Я использую библиотеку запросов Python для выполнения http-запросов.Для этого веб-сайта: https://www.epi.org/resources/budget/ Я не могу прочитать ответ в формате HTML, так как он не читается человеком, похоже, он защищен защитой ddos ​​от cloudfare.Вот мой простой код ниже.

import requests

headers = {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
           'accept-encoding': 'gzip, deflate, br',
           'accept-language': 'en-US,en;q=0.9,pt;q=0.8',
           'cache-control': 'max-age=0',
           'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
           'upgrade-insecure-requests': '1'}

s = requests.Session()
a = s.get('https://www.epi.org/resources/budget/',headers=headers)
print (a.text)

Ответ HTML выглядит следующим образом: https://justpaste.it/6ie73

1 Ответ

0 голосов
/ 04 декабря 2018

Причиной получения нечитаемого контента является Accept-Encoding.В отличие от браузера, если Python получил ответ gzip, мы должны распаковать его самостоятельно.Также br нужно сделать это, но с другим модулем brotl.Таким образом, вы должны установить 'Accept-Encoding': 'default'.Кстати, если вам нужен полный контент, то рендеринг необходим.

...