Не получить правильный объект супа с веб-сайта во время очистки

#python-3.x #web-scraping

Вопрос:

Я пытаюсь очистить веб-сайт yahoo finance, используя BeautifulSoup и запросы, но не получаю правильного ответа. Это дает мне 404 страницы не найденного html — кода вместо того, чтобы дать мне исходный html-код для веб-сайта . Вот мой код.

 
from bs4 import BeautifulSoup
import requests

soup = BeautifulSoup(requests.get('https://finance.yahoo.com/quote/FBRX/profile?p=FBRX').text, 'lxml')
print(soup)
 

Вот мой вывод:
Выходное Изображение

Можете ли вы помочь мне очистить этот сайт.

Ответ №1:

Попробуйте установить User-Agent HTTP-заголовок, чтобы получить правильный ответ от сервера:

 import requests
from bs4 import BeautifulSoup

url = "https://finance.yahoo.com/quote/FBRX/profile?p=FBRX"

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:92.0) Gecko/20100101 Firefox/92.0"
}

soup = BeautifulSoup(requests.get(url, headers=headers).content, "html.parser")
print(soup.h1.text)
 

С принтами:

 Forte Biosciences, Inc. (FBRX)
 

Комментарии:

1. эй, @andrej, не могли бы вы объяснить мне более подробно о HTTP-заголовке агента пользователя. Кстати, спасибо за решение.

2. @AashishPal Каждый браузер, подключающийся к серверу, запрашивает некоторые HTTP-заголовки (это часть протокола HTTP). Один из заголовков User-Agent — он идентифицирует браузер. Некоторые серверы настроены так, что если заголовок отсутствует, он отправляет другой ответ (многие боты не отправляют никаких HTTP-заголовков).