Request.get timeout - PullRequest
       9

Request.get timeout

0 голосов
/ 05 марта 2020

я хотел с помощью функции запросов получить HTML сайта.

мой код:

import Requests
res = Requests.get('https://store.hp.com/us/en/pdp/hp-laserjet-pro-m404n?jumpid=ma_weekly-deals_product-tile_printers_3_w1a52a_hp-laserjet-pro-m404')

print(res.text)

Код застревает при рез. Если вы замените http на «http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&N=-1&IsNodeId=1&Description=GTX&bop=And&Page=1&PageSize=36&order=BESTMATCH» - все будет отлично.

Как мне сохранить html любой страницы? в переменную?

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Ну, вы имеете дело с HP веб-сайтом, который определенно использует современные веб-технологии.

Проблема здесь в том, что вы делаете request без действительного User-Agent, что приведет к firewall из website, чтобы заблокировать request и перечислить его как bot

Вот почему вы получаете ошибку # 10060 Подробности

Здесь Вы можете сделать действительный request и сохранить HTML источник как variable

import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0'}

r = requests.get(
    "https://store.hp.com/us/en/pdp/hp-laserjet-pro-m404n?jumpid=ma_weekly-deals_product-tile_printers_3_w1a52a_hp-laserjet-pro-m404", headers=headers)

print(r)

html = r.text # now it's stored
0 голосов
/ 05 марта 2020

Этот сайт выглядит так, как будто он реализует некоторые базовые c методы защиты от скребков. Если запрос работает в браузере, но не в вашем коде, вам просто нужно адаптировать запрос, заголовки, файлы cookie и т. Д. c, чтобы он более точно соответствовал тому, что делает браузер. К счастью, с этим легко работать. Убедитесь, что вы предоставляете пользовательский агент:)

res = requests.get('https://store.hp.com/us/en/pdp/hp-laserjet-pro-m404n?jumpid=ma_weekly-deals_product-tile_printers_3_w1a52a_hp-laserjet-pro-m404',
               headers={'user-agent':'my app'})
...