Невозможно прочитать html-страницу из красивого супа - PullRequest
0 голосов
/ 14 декабря 2018

Приведенный ниже код застрял после печати привет в выводе.Можете ли вы проверить, что не так с этим?А если сайт безопасен и мне нужна особая аутентификация?

from bs4 import BeautifulSoup
import requests

print('hi')
rooturl='http://www.hoovers.com/company-information/company-search.html'
r=requests.get(rooturl);
print('hi1')
soup=BeautifulSoup(r.content,"html.parser");
print('hi2')
print(soup)

Ответы [ 2 ]

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

Невозможно прочитать html-страницу из красивого супа

Почему у вас возникла эта проблема, веб-сайт считает, что вы - роботы, они вам ничего не отправят.И они даже прерывают соединение, позволяя вам ждать вечно.

Вы просто имитируете запрос браузера, тогда сервер будет считать вас не роботом.

Добавление заголовков - самый простой способ справиться с этой проблемой.Но то, что вы не должны передавать только User-Agent (как в этот раз).Не забудьте скопировать запрос вашего браузера и удалить бесполезный элемент (ы) в ходе тестирования.Если вы ленивы, используйте заголовки браузера прямо, но вы не должны копировать их все, когда хотите загрузить файлы

from bs4 import BeautifulSoup
import requests

rooturl='http://www.hoovers.com/company-information/company-search.html'
with requests.Session() as se:
    se.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "Accept-Encoding": "gzip, deflate",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Language": "en"
    }
    resp = se.get(rooturl)
print(resp.content)
soup = BeautifulSoup(resp.content,"html.parser")
0 голосов
/ 14 декабря 2018

Возникла та же проблема, что и у вас.Просто сидел там.Я попытался, добавив user-agent, и он вытащил его очень быстро.Не знаю, почему это так.

from bs4 import BeautifulSoup
import requests


headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'}

print('hi')
rooturl='http://www.hoovers.com/company-information/company-search.html'
r=requests.get(rooturl, headers=headers)
print('hi1')
soup=BeautifulSoup(r.content,"html.parser");
print('hi2')
print(soup)

РЕДАКТИРОВАТЬ: Так странно.Теперь это не работает для меня снова.Сначала это не сработало.Тогда это сделал.Теперь это не так.Но есть и другой потенциальный вариант с использованием селена.

from bs4 import BeautifulSoup
import requests
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('http://www.hoovers.com/company-information/company-search.html')

r = browser.page_source
print('hi1')
soup=BeautifulSoup(r,"html.parser")
print('hi2')
print(soup)

browser.close() 
...