AttributeError:“NoneType”对象没有“strip”属性

2024-04-23 16:57:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在努力学习Python(目前是请求和美化组4),我发现了一个教程online

问题是我不断地得到下面的错误,根本无法找出它。。。

任何帮助都将不胜感激!

回溯(最近一次呼叫时间): 文件“C:\ Users\BillyBob\Desktop\Web Scrap.py”,第14行,in title=a.string.strip() AttributeError:“NoneType”对象没有“strip”属性

这是我的代码,以防我出错

import requests
from bs4 import BeautifulSoup

result = requests.get("http://www.oreilly.com/")

c = result.content

soup = BeautifulSoup(c, "html.parser")
samples = soup.find_all("a")
samples[0]

data = {}
for a in samples:
    title = a.string.strip()
    data[title] = a.attrs['href']

Tags: inimportdatastringtitle错误时间教程
2条回答

samples的第一个成员没有字符串属性,因此,a.string不返回任何内容,因此您正在对不存在的内容调用strip()方法。

然而,您还有另一个问题;不一定a具有href属性。相反,您应该明确地检查这两个,否则您将得到错误(这是Yevhen的答案的问题,否则是正确的)。

解决问题的一个潜在方法是:

for a in samples:
    if not a.string is None:
        title = a.string.strip()
        if 'href' in a.attrs.keys():
            data[title] = a.attrs['href']

这样,在调用关联的方法之前显式检查每个参数。

来自BS4 documentation

If a tag contains more than one thing, then it’s not clear what .string should refer to, so .string is defined to be None

我相信你可以用.text来得到你想要的:

title = a.text.strip()

相关问题 更多 >