我在循环there is no <a href=""> tag
中使用bs4和抓取链接。
因此,在这种情况下,我想输入元素的text
属性。
我的示例代码,
base_url = "http://example.com"
abc = base_url + str(tds.a['href']) if tds.a['href'] else tds.text
抛出异常
TypeError: 'NoneType' object is not subscriptable
这就是我的td
元素的样子:
<td nowrap=""><font face="Arial" size="1"><a href="view_document?docurl=http://www.envirostor.dtsc.ca.gov/public/deliverable_documents/6382679581/Recorded%20LUC%2010%2D14%2D2010%2Epdf" target="6382679581">[VIEW COVENANT]</a> </font></td>"
如何解决这个问题?
聚苯乙烯。使用Python 3和Bs4
答案 0 :(得分:1)
在Python中,它始终是EAFP(比宽容更容易要求宽恕)。
如果a
标记没有href
属性,则tds.a['href']
会引发KeyError
。
如果td
标记没有a
标记,则tds.a['href']
会引发TypeError
,如问题所示。
所以,使用 EAFP 原则:
base_url = "http://example.com"
try:
abc = base_url + tds.a['href']
except (KeyError, TypeError):
abc = base_url + tds.text
答案 1 :(得分:0)
使用BS4中的has_attr()方法:
abc = base_url + str(tds.a['href']) if tds.has_attr('href') else tds.text