Похоже, что элементов, которые вы пытаетесь найти, там нет, потому что они создаются динамически после загрузки сайта.Вы можете убедиться в этом сами, посмотрев исходный код при первой загрузке сайта.Вы также можете попробовать напечатать 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
.