BeautifulSoup 和 Python 的属性错误(网络抓取)
Attribute error on BeautifulSoup with Python (web scraping)
我正在学习使用 Python 进行网络抓取的教程,到目前为止我有这个:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.amazon.de/JBL-Charge-Bluetooth-Lautsprecher-Schwarz- integrierter/dp/B07HGHRYCY/ref=sr_1_2_sspa?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91& keywords=jbl+charge+4&qid=1562775856&s=gateway&sr=8-2-spons&psc=1'
headers = {
"User-Agent": 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Mobile Safari/537.36'}
page = requests.get(URL,headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')
title = soup.find(id="productTitle").get_text()
print(title.strip())
我正在尝试从亚马逊打印某些产品的名称,但我收到此错误:AttributeError: 'NoneType' object has no attribute 'get_text',每当我尝试 运行来自 BeautifulSoup 库的 get_text() 方法。如何才能成功打印商品名称?
get_text()
不起作用,因为您的选择器没有找到合适的元素,而是返回了 None
。所以你在一个没有 get_text()
方法的空元素上调用它。我不确定为什么 id=productTitle
不起作用,因为在我看来 HTML 应该是这样。但是,您可以使用不同的选择器并在其上方获取 div 而不是获得类似的结果:
title = soup.find(id="title").get_text()
print(title.strip())
输出是:
"JBL Charge 4 Bluetooth-Lautsprecher in Schwarz, Wasserfeste, portable Boombox mit integrierter Powerbank, Mit nur einer Akku-Ladung bis zu 20 Stunden kabellos Musik streamen"
尝试以下操作:
title = soup.find('span', id="productTitle").get_text()
这应该有效。
我正在学习使用 Python 进行网络抓取的教程,到目前为止我有这个:
import requests
from bs4 import BeautifulSoup
URL = 'https://www.amazon.de/JBL-Charge-Bluetooth-Lautsprecher-Schwarz- integrierter/dp/B07HGHRYCY/ref=sr_1_2_sspa?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91& keywords=jbl+charge+4&qid=1562775856&s=gateway&sr=8-2-spons&psc=1'
headers = {
"User-Agent": 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Mobile Safari/537.36'}
page = requests.get(URL,headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')
title = soup.find(id="productTitle").get_text()
print(title.strip())
我正在尝试从亚马逊打印某些产品的名称,但我收到此错误:AttributeError: 'NoneType' object has no attribute 'get_text',每当我尝试 运行来自 BeautifulSoup 库的 get_text() 方法。如何才能成功打印商品名称?
get_text()
不起作用,因为您的选择器没有找到合适的元素,而是返回了 None
。所以你在一个没有 get_text()
方法的空元素上调用它。我不确定为什么 id=productTitle
不起作用,因为在我看来 HTML 应该是这样。但是,您可以使用不同的选择器并在其上方获取 div 而不是获得类似的结果:
title = soup.find(id="title").get_text()
print(title.strip())
输出是:
"JBL Charge 4 Bluetooth-Lautsprecher in Schwarz, Wasserfeste, portable Boombox mit integrierter Powerbank, Mit nur einer Akku-Ladung bis zu 20 Stunden kabellos Musik streamen"
尝试以下操作:
title = soup.find('span', id="productTitle").get_text()
这应该有效。