【发布时间】:2017-05-13 10:00:56
【问题描述】:
我正在使用 Python 2.7 和 Beautiful Soup 4.5.1 版
我正在努力使这个非常简单的脚本工作。我的目标是通过解析产品页面的 html 并在
<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 的空列表。知道为什么吗?
非常感谢任何帮助。
【问题讨论】:
-
你确定你得到了这个页面并且它包含了所需的 div 吗?
-
可能与页面的加载方式有关:尝试手动加载时首先显示进度条,而页面执行后台查询以检查库存,然后显示“在线售罄”。这意味着在加载原始页面时,该内容不存在。
-
@Nurzhan 是的,我确定。我现在正在查看页面的元素,它就在那里。
-
div 实际上有两个类。在这种情况下,您需要将数组传递给选择器:
{'class': ['status', 'online-availability-status']},或者直接丢弃第一个类 -
@VBB 感谢您的评论。有关如何解决此问题的任何建议?
标签: python beautifulsoup