BeatifulSoup и запросы, возвращающие "None" - PullRequest
1 голос
/ 14 июля 2020

Я новичок в bs4 и запросах, и я пытаюсь найти в Интернете Amazon по цене какого-то случайного продукта (в данном случае eco dot 3). Я не понимаю, почему мой парсер всегда возвращает «Нет», когда я его запускаю. Очевидно, что элемент, который я ищу, присутствует, но все же, когда я пытаюсь использовать функцию поиска, она не работает. Не знаю, поможет ли это, но вот урок, которому я следил: https://www.youtube.com/watch?v=Bg9r_yLk7VY&t=594sThank вам очень нравится! Также вот мой код

from bs4 import BeautifulSoup


URL = 'https://www.amazon.de/dp/B07NQCVHQ6/ref=gw_de_desk_h1_aucc_db_dbckpscs_qh_0520_v1_t1?pf_rd_r=WY9A7Y14N1T2NGG5KT9S&pf_rd_p=56ce1aab-22bc-4377-bb24-b13391bb0efd'
headers = {"User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}

page = requests.get(URL, headers=headers)

soup = BeautifulSoup(page.content, 'html.parser')

price = soup.find(id="priceblock_ourprice")
print(price)

Не знаю, помогает ли это, но вот учебник, которому я следил: https://www.youtube.com/watch?v=Bg9r_yLk7VY&t=594s

1 Ответ

1 голос
/ 14 июля 2020

вам нужно внести простые изменения, просто измените это:

soup = BeautifulSoup(page.content, 'html.parser')

на

soup = BeautifulSoup(page.content, 'lxml')

вывод:

<span class="a-size-medium a-color-price priceBlockBuyingPriceString" id="priceblock_ourprice">48,73 ?</span>

И:

print(price.text)

Выдаст вам только цену

про разницу между парсерами вы можете прочитать на официальной странице - - https://www.crummy.com/software/BeautifulSoup/bs4/doc/#differences -between-parsers

или в этом вопросе есть объяснение - Beautiful Soup and Table Scraping - l xml vs html parser

...