我有一个页面的span标签
<span itemprop="name">
DeWalt DCD778D2T-GB 18V 2.0Ah Li-Ion XR Brushless Cordless Combi Drill
</span>
我将如何提取span标记内的文本,我尝试使用一些查找方法,但未收到任何项目对象错误
下面是我尝试过的代码,我在哪里出错?
r=requests.get('https://www.screwfix.com/p/dewalt-dcd778d2t-gb-18v-2-0ah-li-ion-xr-brushless-cordless-combi-drill/268fx')
c=r.content
soup=BeautifulSoup(c,"html.parser")
ToolName1 = soup.find("span", {"itemprop" : "name"}).text
我的错误是
AttributeError:'NoneType'对象没有属性'text'
答案 0 :(得分:1)
实际上,您获得了hideForm() {
this.$emit('update:hiddenMode', true);
}
403(禁止访问),然后repr(soup)是空字符串,因此,汤(.span),{“ itemprop”:“ name”})为None。这意味着None.text,这就是为什么出现AttributeError的原因:'NoneType'对象没有属性'text'。
您需要为此网址指定标题,也许只是r.status.code
作为标题
User-Agent
那么你会得到这个
import requests
from bs4 import BeautifulSoup
url = ('https://www.screwfix.com/p/dewalt-dcd778d2t-gb-18v-2-0ah-li-ion-xr-'
'brushless-cordless-combi-drill/268fx')
headers = {'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb'
'Kit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.14'
'9 Safari/537.36')}
r = requests.get(url, headers=headers)
if r.status_code == 200:
c = r.content
soup = BeautifulSoup(c,"html.parser")
ToolName1 = soup.find("span", {"itemprop" : "name"}).text
print(ToolName1.strip())
状态码200是成功的一般情况,有些状态码(不是200)仍然表示成功。