我正在尝试创建一个BeautifulSoup价格网络爬虫。以下是我感兴趣的抓取网站显示的内容。在div标签之间提取数据Python中的Beautifulsoup
<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没有显示定价。我是编程新手,并试图研究这一点,但没有运气。任何援助将不胜感激,谢谢。
你在技术上得到正确的答案了。在页面调用一些javascript之前,实际的价格'($ 14.76)'不会被渲染,而是改变页面以显示实际价格'($ 14.76)'而不是'-'的占位符。请阅读以下一些补救方法:https://datapatterns.readthedocs.io/en/latest/recipes/scraping-beyond-the-basics.html#dealing-with-javascript – serk
谢谢serk。我看了一下你的链接,找到了解决方案。这并不理想,但它帮助我学习了更多。我最后使用硒,我会在下面发布答案。谢谢! –