python - 使用美丽的汤 4 无法在亚马逊页面上找到元素
问题描述
您好,我正在尝试在 python 上使用漂亮的汤 4 包确定亚马逊商品的价格,但我不断收到无类型对象错误,因此无法找到价格
我已尝试切换 span 和 id 元素以查看是否可能导致问题,但它不会改变任何东西
my python code:
amazon_price_checker('https://www.amazon.com/Merax-Finiss-Aluminum-Mountain-
Brakes/dp/B016A59WPM')
def amazon_price_checker(amazon_link):
print(amazon_link)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) \
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 \
Safari/537.36',
}
res = requests.get(amazon_link, headers=headers)
res.raise_for_status()
soup = BeautifulSoup(res.text, 'html.parser')
price = soup.find("span", {"id": "priceblock_ourprice"}).get_text()
print(price)
html code on website:
<span id="priceblock_ourprice" class="a-size-medium a-color-price
priceBlockBuyingPriceString">$239.99</span>
我希望输出为 239.99 但收到此错误
https://www.amazon.com/Merax-Finiss-Aluminum-Mountain-Brakes/dp/B016A59WPM
Traceback (most recent call last):
price = soup.find("span", {"id": "priceblock_ourprice"}).get_text()
AttributeError: 'NoneType' object has no attribute 'get_text'
解决方案
看起来像一个错误html.parser
(或者原始 html 无效)。使用lxml
orhtml5lib
代替工作
soup = BeautifulSoup(res.text, 'lxml')
打印出来
$239.99
推荐阅读
- c++ - C++ protobuf 序列化数据
- vue.js - 第二次点击后道具不影响孩子
- javascript - 当我想“开始承诺”时
- corda - 在 Corda 中,模式不能转换为 net.corda.core.schemas.MappedSchema 异常
- marklogic - Marklogic如何在抛出捕获异常后继续循环
- arrays - bash 将数组拆分为具有动态名称的单独文件
- c# - 遍历 DataTable 中每行的每个值并比较该值
- python - BitMEX 熊猫数据帧到 nd 数组
- reactjs - 从视图中响应本机 API 调用
- python - 通过 $PATH 符号链接运行 pipenv 环境到可执行的 .py 文件