Почему вывод Python не соответствует HTML для целевого сайта - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь создать на целевом веб-сайте такие сведения, как цена, название, jpeg продукта, но то, что просматривается через python с использованием Beautifulsoup, похоже, не соответствует HTML-адресу целевого веб-сайта (с помощью F12).

Я пытался использовать html.parser и lxml в функции beautifulsoup, но оба, похоже, не имеют значения.Я пытался найти похожие проблемы, но ничего не нашел.Я использую Atom для запуска кода Python и использую Ubuntu 18.04.2.Я довольно новичок в использовании Python, но немного кодировал раньше

1 Ответ

0 голосов
/ 25 июня 2019

Похоже, что элементов, которые вы пытаетесь найти, там нет, потому что они создаются динамически после загрузки сайта.Вы можете убедиться в этом сами, посмотрев исходный код при первой загрузке сайта.Вы также можете попробовать напечатать html_soup.prettify() и увидите, что элементов, которые вы пытаетесь найти, там нет.

Вдохновленный этим вопросом , я представляю решение, основанное наиспользуя селен :

from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://www.target.com/s?searchTerm=dove"
driver = webdriver.Firefox()

driver.get(url)
html = driver.page_source
html_soup = BeautifulSoup(html, 'html.parser')
items = html_soup.find_all('li', class_ = 'bkaXIn')
driver.close()

print(len(items))

Предыдущий код выводит 28 при запуске.

Обратите внимание, что вам необходимо установить селен ( руководство по установке здесь) и соответствующий драйвер для этого (в моем решении я использовал драйвер Firefox, который можно загрузить здесь ).

Также обратите внимание, что я использую class_ = 'bkaXIn' (случайчувствительный!) в html_soup.find_all.

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