![](/img/trans.png)
[英]Getting AttributeError: 'NoneType' object has no attribute 'text' (web-scraping)
[英]web-scraping in python using beautiful soup: AttributeError: 'NoneType' object has no attribute 'text'
我正在使用 html 请求和漂亮的汤(我是新手)开发一个网络爬虫。 对于 1 个网页( https://www.superdrug.com/Make-Up/Face/Primer/Face-Primer/Max-Factor-False-Lash-Effect-Max-Primer/p/788724 )我试图刮产品的价格。 HTML 是:
<span class="pricing__now" itemprop="price">8.99</span>
我尝试过使用soup.find 和soup.find_all:
r = session.get(link)
r.html.render(sleep=3, timeout=30)
soup = BeautifulSoup(r.content, 'lxml')
price = soup.find('span', itemprop="price").text
r = session.get(link)
r.html.render(sleep=3, timeout=30)
soup = BeautifulSoup(r.content, 'lxml')
price = soup.find_all('span', itemprop="price").text
和 r.html.find:
r = session.get(link)
r.html.render(sleep=6, timeout=30)
price = r.html.find('body > div.pdp-container > div.content-wrapper.pdp > div > div > div.pdp__purchase-options > div.pricing > span:nth-child(2)', first=True).text
返回None
和空列表,或者AttributeError: 'NoneType' object has no attribute 'text'
。 我不确定为什么我无法获取这些信息。 任何帮助,将不胜感激。
您可以从页面中嵌入的 Json 数据中获取价格。 例如:
import json
import requests
from bs4 import BeautifulSoup
url = "https://www.superdrug.com/Make-Up/Face/Primer/Face-Primer/Max-Factor-False-Lash-Effect-Max-Primer/p/788724"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:87.0) Gecko/20100101 Firefox/87.0"
}
soup = BeautifulSoup(requests.get(url, headers=headers).content, "html.parser")
data = json.loads(soup.select('[type="application/ld+json"]')[1].contents[0])
# uncomment this to print all data:
# print(json.dumps(data, indent=4))
print(data["offers"]["price"])
印刷:
8.99
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.