每当我尝试运行此代码时:
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 = price[0:7]
if (converted_price < '₹ 1,200'):
send_mail()
print(converted_price)
print(title.strip())
if(converted_price > '₹ 1,400'):
send_mail()
在此代码可以正常工作之前,它给我一个错误AttributeError: 'NoneType' object has no attribute 'get_text'
。
答案 0 :(得分:1)
import requests
from bs4 import BeautifulSoup
url = 'https://www.amazon.com/Camera-24-2MP-18-135mm-Essential-Including/dp/B081PMPPM1/ref=sr_1_1_sspa?dchild=1&keywords=Canon+EOS+80D&qid=1593325243&sr=8-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyU1M0M1JVTkY3WTBVJmVuY3J5cHRlZElkPUEwNDQzMjI5Uk9DM08zQkM1RU9RJmVuY3J5cHRlZEFkSWQ9QTAyNjI0NjkzT0ZLUExSRkdJMDYmd2lkZ2V0TmFtZT1zcF9hdGYmYWN0aW9uPWNsaWNrUmVkaXJlY3QmZG9Ob3RMb2dDbGljaz10cnVl'
headers = { "user-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
page = requests.get(url,headers= headers)
soup = BeautifulSoup(page.content,"lxml")
title = soup.find(id = "productTitle").get_text()
print(title)
我尝试了这个并且奏效了
答案 1 :(得分:1)
请检查这可能是产品缺货的原因,这意味着网站上没有价格,这就是其Nonetype的原因。尝试选择价格可见的其他产品。
答案 2 :(得分:0)
您要查询的页面中没有productTitle
id或priceblock_ourprice
id。我建议您遵循以下两个步骤:
-在浏览器中检查网址,然后查找该ID
-检查您在page.content
中得到的内容,因为它可能与您在浏览器中看到的内容不同
希望有帮助
答案 3 :(得分:0)
我假设您尝试分析Amazon产品。
元素productTitle
和priceblock_ourprice
存在(我已经检查过)。
您应该选中page.content
。
也许您的headers
对网站不可接受。
尝试:
import requests
from bs4 import BeautifulSoup
URL = "https://www.amazon.de/COMIFORT-PC-Tisch-Studie-Schreibtisch-Mehrfarbig/dp/B075R95B1S"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "lxml")
title = soup.find(id="productTitle").get_text()
price = soup.find(id="priceblock_ourprice").get_text()
print(title)
print(price)
结果:
COMIFORT, Computerschreibtisch, Schreibtisch für das Arbeitszimmer, Schreibtisch, Maße: 90 x 50 x 77 cm
50,53 €