Я пытаюсь создать поисковый робот BeautifulSoup. Ниже приведено то, что показано на веб-сайте, на котором я заинтересован в обходе.Извлечь данные между div-тегами Beautifulsoup в Python
<div class="product-total-price">
<span itemprop="price">$14.76</span>
Ценообразование "$ 14,76" есть все, что я заинтересован в Но когда я пытаюсь вернуть его
import bs4
import requests
def getPrice(productUrl):
res = requests.get(productUrl)
res.raise_for_status()
soup = bs4.BeautifulSoup(res.text, 'html.parser')
return soup.select("div.product-total-price > span")[0].parent
price = getPrice('https://www.homedepot.ca/en/home/p.12-sheetrock-ultralight-drywall-gypsum-panel-4-x-12.1000149007.html')
print(price)
Выход есть:
-
Я использовал .parent. чтобы посмотреть все будет
<div class="product-total-price">
<span itemprop="price">-</span>
И poof нет цены показаны. Я новичок в программировании и пытался исследовать это, но мне не повезло. Любая помощь будет оценена, спасибо.
Вы технически получаете правильный ответ обратно. Фактическая цена '($ 14.76)' не отображается до тех пор, пока страница не назовет некоторый javascript, и это то, что изменяет страницу, чтобы показать фактическую цену '($ 14.76)', а не местозаполнитель '-'. Прочитайте некоторые способы устранения этого здесь: https://datapatterns.readthedocs.io/en/latest/recipes/scraping-beyond-the-basics.html#dealing-with-javascript – serk
Спасибо, серк. Я взглянул на вашу ссылку и нашел решение. Это не идеально, но это помогло мне узнать немного больше. В конце концов я использовал селен, я отправлю ответ ниже. Спасибо! –