“ AttributeError:'NoneType'对象没有属性'get_text'”

时间:2019-08-12 13:31:58

标签: javascript python

每当我尝试运行此代码时:

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'

4 个答案:

答案 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产品。 元素productTitlepriceblock_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 €