BeautifulSoup не может найти Div, используя ID - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь очистить цены от Amazon и использую запросы и BeautifulSoup4. Фрагмент из сценария выглядит следующим образом

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'}

amazon_url = "https://www.amazon.com/gp/offer-listing/B076KDY7VF/ref=dp_olp_new_mbc?ie=UTF8&condition=new"

r = requests.get(url=amazon_url, headers=headers)
page_text = r.text

soup = BeautifulSoup(page_text, "html.parser")

# Finding the Price Table
table = soup.find(id="olpOfferListColumn")

print(table)

Таблица всегда выводится как Нет . Я не уверен, в чем проблема. Пожалуйста, объясните.

1 Ответ

0 голосов
/ 18 сентября 2018

Проблема в том, что html.parser не распознает / обрабатывает незамкнутые теги как фактические теги. Если вы выполните soup.div, вы увидите, что он принимает только один тег div. Единственный, который имеет закрывающий тег в исходном коде. Если вы используете парсер lxml, он добавит закрывающие теги и ваш код будет работать.

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'}

amazon_url = "https://www.amazon.com/gp/offer-listing/B076KDY7VF/ref=dp_olp_new_mbc?ie=UTF8&condition=new"

r = requests.get(url=amazon_url, headers=headers)
page_text = r.text

soup = BeautifulSoup(page_text, "lxml")

# Finding the Price Table
table = soup.find(id="olpOfferListColumn")

print(table)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...