python - Bs4 AttributeError:“NoneType”对象没有属性“get_text”
问题描述
我刚刚开始了一个跟踪亚马逊价格的应用程序项目。根据教程视频,在这一步运行代码时,它必须显示产品的名称和价格,但唯一出现的是下一个错误:AttributeError: 'NoneType' object has no attribute 'get_text'。我已经在其他页面上尝试过,并在此处修改了相同的主题,但没有找到答案。请帮忙 ;(
代码本身:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.amazon.es/dp/B07JQRWLXM/ref=nav_signin?pf_rd_r=FJX3CJC8RWFE3NPQJRNP&'
headers = {
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/86.0.4240.75 Safari/537.36'}
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find(id="productTitle").get_text()
price = soup.find(id = "priceblock_ourprice").get_text()
converted_price = float(price[0:3])
print(converted_price)
print(title.strip())
解决方案
您的脚本几乎是正确的,只需使用lxml
or html5lib
parser 而不是html.parser
:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.amazon.es/dp/B07JQRWLXM/ref=nav_signin?pf_rd_r=FJX3CJC8RWFE3NPQJRNP&'
headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
page = requests.get(URL, headers=headers)
soup = BeautifulSoup(page.content, 'lxml') # <-- change to 'lxml' or 'html5lib'
title = soup.find(id="productTitle").get_text()
price = soup.find(id = "priceblock_ourprice").get_text()
converted_price = float(price.split()[0].replace(',', '.')) # <-- change the conversion method
print(converted_price)
print(title.strip())
印刷:
69.99
Tablet Fire 7, pantalla de 7'', 16 GB (Negro) - Incluye ofertas especiales
推荐阅读
- android - Android ClassNotFoundException android.support.v4.util.ArrayMap
- django - 如何检索当前 Django 用户并将其输入数据库条目
- javascript - 在 Firebase 博客中的 Vanilla Javascript 中将孩子的 ID 设置为父母唯一 ID 的父母
- reactjs - 为什么 Redux reducer 在点击操作后返回 undefined?
- c# - Asp.NET Core 集成测试:POST 方法获取空值
- amazon-web-services - 无法列出 AWS SQS 指标
- installation - Debian 9 TYPO3 8.7.20
- php - 哪个 URL 将使用搜索引擎进行 SEO
- ruby-on-rails - 为什么 DateTime.new 只返回年份?
- javascript - 关于 javascript alert 和 sendRedirect 的问题