【发布时间】:2017-02-11 23:51:45
【问题描述】:
我正在尝试创建一个 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>
而且没有显示定价。我是编程新手,曾尝试对此进行研究,但没有运气。任何帮助将不胜感激,谢谢。
【问题讨论】:
-
您在技术上得到了正确的答案。实际价格
($14.76)直到页面调用一些javascript 才会呈现,这就是改变页面以显示实际价格($14.76)而不是-的占位符的原因。在此处阅读一些解决此问题的方法:datapatterns.readthedocs.io/en/latest/recipes/… -
谢谢你。我查看了您的链接并找到了解决方案。这并不理想,但它帮助我学到了更多东西。我最后使用了硒,我将在下面发布答案。谢谢!
标签: python html beautifulsoup web-crawler