BeautifulSoup:TypeError:“NoneType”对象不可下标

Posted

技术标签:

【中文标题】BeautifulSoup:TypeError:“NoneType”对象不可下标【英文标题】:BeautifulSoup: TypeError: 'NoneType' object is not subscriptable 【发布时间】:2015-01-23 15:09:10 【问题描述】:

我需要从链接 (a) 标记中获取 "href" 属性。

我跑

 label_tag = row.find(class_='Label')
 print(label_tag)

我明白了(抱歉,出于隐私原因,我无法显示链接和文字)

<a class="Label" href="_link_">_text_</a>

类型

<class 'bs4.element.Tag'>

但是当我跑步时(如BeautifulSoup getting href所示)

tag_link = label_tag['href']
print(tag_link)

我猜是以下错误(在第一个命令上)

TypeError: 'NoneType' object is not subscriptable

有什么线索吗? 提前致谢

[已解决] 编辑:我犯了一个错误(循环遍历具有异构结构的元素)

【问题讨论】:

您能展示一下您目前拥有的完整代码吗?谢谢。 【参考方案1】:

因为&lt;class 'bs4.element.Tag'&gt;中没有“Label”类,所以label_tag['href']返回None,就会出错。

您可以使用以下代码来处理此异常:

if tag_link = label_tag.get('href'):
    print(tag_link)
else:
    print("there is no class of 'Label' or no attribute of 'href'! ")

此方法可用于处理异常以防止程序崩溃。

如果你的页面元素是固定的,前一个答案是可行的。

【讨论】:

【参考方案2】:

我的猜测是 label_tag 实际上并没有返回您正在寻找的汤的部分。这个最小的例子有效:

import bs4
text = '''<a class="Label" href="_link_">_text_</a>'''
soup = bs4.BeautifulSoup(text)
link = soup.find("a","class":"Label")
print (link["href"])

输出:

_link_

【讨论】:

你是绝对正确的。我犯了一个错误(循环遍历具有异构结构的元素)。现在它可以工作了。还是谢谢

以上是关于BeautifulSoup:TypeError:“NoneType”对象不可下标的主要内容,如果未能解决你的问题,请参考以下文章

python beautifulsoup4突然TypeError:'NoneType'对象不可调用,但它不是None

BeautifulSoup:“响应”类型的对象没有 len()

Python中BeautifulSoup中对HTML标签的提取

有没有办法通过熊猫读取BeautifulSoup输出以读取表?

TypeError: sequence item 0: expected string, Tag found

日常错误记录3