首页 > 解决方案 > 使用美丽的汤 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'

标签: pythonhtmlbeautifulsoup

解决方案


看起来像一个错误html.parser(或者原始 html 无效)。使用lxmlorhtml5lib代替工作

soup = BeautifulSoup(res.text, 'lxml')

打印出来

$239.99

推荐阅读