gpt4 book ai didi

python - 在 Python 中使用 Beautiful Soup 在线检查产品的可用性

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:22 24 4
gpt4 key购买 nike

我使用的是 python 2.7 和 Beautiful Soup 版本 4.5.1

我束手无策,试图让这个非常简单的脚本发挥作用。我的目标是通过解析产品页面的 html 并提取

中的信息,从 Best Buy 的网站获取有关 NES 控制台在线可用性状态的信息
<div class="status online-availability-status">             Sold out online     </div>

这是我第一次使用 Beautiful Soup 模块,所以如果我错过了一些明显的东西,请原谅我。这是我为尝试获取上述信息而编写的脚本:

import requests
from bs4 import BeautifulSoup

page = requests.get('http://www.bestbuy.ca/en-CA/product/nintendo-nintendo-entertainment-system-nes-classic-edition-console-clvsnesa/10488665.aspx?path=922de2a5ceb066b0f058cc567ad3d547en02')

soup = BeautifulSoup(page.content, 'html.parser')

avail = soup.findAll('div', {"class": "status online-availability-status"})

但随后我只得到一个空的 avail 列表。知道为什么吗?

非常感谢任何帮助。

最佳答案

正如上面的评论所暗示的,您似乎正在寻找一个由 JavaScript 客户端生成的标签;它在加载的页面上使用“检查”显示,但在查看页面源时则不显示,这就是对请求的调用所撤回的内容。您可以尝试使用 dryscrape(您可能需要使用 pip install dryscrape 安装)。

import dryscrape
from bs4 import BeautifulSoup
session = dryscrape.Session()
url = 'http://www.bestbuy.ca/en-CA/product/nintendo-nintendo-entertainment-system-nes-classic-edition-console-clvsnesa/10488665.aspx?path=922de2a5ceb066b0f058cc567ad3d547en02'
session.visit(url)
response = session.body()
soup = BeautifulSoup(response)
avail = soup.findAll('div', {"class": "status online-availability-status"})

这是与抓取动态生成的内容相关的问题中最流行的解决方案:

Web-scraping JavaScript page with Python

关于python - 在 Python 中使用 Beautiful Soup 在线检查产品的可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41373578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com