[英]AttributeError: 'NoneType' object has no attribute 'strip' jupyter notebook
[英]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.