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】:因为<class 'bs4.element.Tag'>
中没有“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输出以读取表?