繁体   English   中英

AttributeError:'NoneType'对象没有属性'strip'

[英]AttributeError: 'NoneType' object has no attribute 'strip'

我一直在努力学习Python(目前的请求和beautifulsoup4),我在网上找到了一个教程

问题是我一直得到以下错误,根本无法搞清楚...

任何帮助,将不胜感激!

回溯(最近一次调用最后一次):文件“C:\\ Users \\ BillyBob \\ Desktop \\ Web Scrap.py”,第14行,标题= 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']

BS4文档

如果一个标签包含多个东西,那么不清楚.string应该引用什么,所以.string被定义为None

我相信你可以使用.text来获得你想要的东西:

title = a.text.strip()

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']

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM