BeautifulSoup a。['href']异常处理

时间:2018-03-23 04:16:43

标签: python web-scraping beautifulsoup

我在循环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

2 个答案:

答案 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