【问题标题】:Scraping prices with BeautifulSoup4 in Python3在 Python3 中使用 BeautifulSoup4 刮价格
【发布时间】:2020-04-19 15:00:33
【问题描述】:

我是 Python 和 BeautifulSoup4 的新手。另外,我不了解 HTML。为了练习,我试图在 Carrefour 网站上使用它来提取我搜索 EAN 代码的产品的价格和每公斤价格。 我的代码:

barcodes = ['5449000000996']

for barcode in barcodes:
    url = 'https://www.carrefour.es/?q=' + barcode
    html = requests.get(url).content
    bs = BeautifulSoup(html, 'lxml')

    searchingprice = bs.find_all('strong', {'class':'ebx-result-price__value'})
    print(searchingprice)

    searchingpricerperkg = bs.find_all('span', {'class':'ebx-result__quantity ebx-result-quantity'})
    print(searchingpricerperkg)

但我根本没有得到任何结果

这是 HTML 代码的截图:

我做错了什么?我尝试了其他网站,它似乎可以工作

【问题讨论】:

    标签: html python-3.x web-scraping beautifulsoup request


    【解决方案1】:

    这里的问题是您正在抓取包含 Javascript 生成内容的页面。基本上,您通过请求抓取的页面实际上并没有您从中抓取的东西——它有一堆 javascript。当您的浏览器转到该页面时,它会运行生成内容的 javascript - 因此您在浏览器中呈现的版本中看到的页面与从实际页面本身返回的内容不同。 该页面包含您的浏览器编写您看到的页面的说明

    如果您只是在练习,您可能只想尝试使用不同的来源进行抓取,但要从此页面抓取,您需要研究可以处理 javascript 生成的内容的其他解决方案:

    Web-scraping JavaScript page with Python

    或者,javascript 通过从其他来源请求数据来生成内容。我不会说西班牙语,所以我对弄清楚这部分没有太大帮助,但你也许可以。

    作为练习,继续让 BS4 美化并打印出它收到的页面。您会在该页面中看到其他位置的请求以获取您所要求的信息。您也许可以将请求更改为不转到您查看信息的页面,而是转到该页面从中获取数据的位置。

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-03
      相关资源
      最近更新 更多