当前位置: 首页 > 知识库问答 >
问题:

AttributeError:“非类型”对象没有属性“strip”

毋弘光
2023-03-14

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

问题是我一直得到下面的错误,根本无法弄清楚...

任何帮助都将不胜感激!

回溯(最近一次调用last):文件“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']

共有2个答案

林和煦
2023-03-14

samples的第一个成员没有string属性,因此,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']

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

洪弘壮
2023-03-14

从BS4留档:

如果一个标记包含多个内容,那么不清楚是什么。字符串应该引用,所以。字符串被定义为无

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

title = a.text.strip()
 类似资料:
  • 我目前正在构建一个烧瓶应用程序 我能够从下面的stackoverflow留言板上得到这么远,但是我不认为我做对了什么(可能忽略了什么?) 在Flask应用中运行Dash应用 这里的任何帮助都将不胜感激 这是我的服务器。py代码: 这是我的服务器。py:从应用程序导入服务器,应用程序服务器。运行(调试=True) 当我运行这一切时,我得到:

  • 我正在尝试删除空行。但是,当我试图计算空行数以查看它是否有效时,我有一个错误: AttributeError:“非类型”对象没有属性“isnull” 我的剧本: 输出: Traceback(最近的调用最后): 打印文件“\data\u vis.py”,第12行(data\u not\u empty.isnull().sum()) AttributeError:“非类型”对象没有属性“isnull”

  • 我正在随意地编程我的不和谐机器人,当我完成后,我通过使用我的替代帐户加入测试服务器来测试我的代码(当有人加入服务器时,它会发送欢迎消息)。但是当另一种选择加入时,我得到了这个错误: 我不知道出了什么问题。我的代码:https://pastebin.com/VntL0y5d

  • 我的代码返回这个错误"'NoneType对象没有属性'发送'" 这是我的密码 导入discord从discord导入操作系统。ext导入命令 客户=不和谐。客户() 类日志记录(commands.Cog):“为您设置日志记录” def设置(客户端):客户端。添加_cog(日志记录(客户端)) 我是在我的齿轮,而不是在主要。派克

  • 我尝试了谷歌云运行和完美的工作,但突然得到了错误,而在几天后崩溃(属性错误):'NoneType'对象没有属性'图像' 一切似乎都很好,我已经设置了项目名称,地区,但得到相同的错误 使用的命令是 gcloud测试版运行部署——镜像gcr。io/云运行测试/映像名称--允许未经身份验证--更新env vars environment=“生产”

  • 问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。