AttributeError:'Doctype'对象没有属性'has_attr'

时间:2017-11-30 19:37:59

标签: python hyperlink attributes

该脚本假设提取所有超链接

  import httplib2
import bs4 as bs
from bs4 import SoupStrainer

http = httplib2.Http()
status, response = http.request('http://www.nytimes.com')

for link in bs.BeautifulSoup(response, parseOnlyThese=SoupStrainer('a')):
    if link.has_attr('href'):
        print(link['href'])

这会产生错误:

AttributeError: 'Doctype' object has no attribute 'has_attr'

我如何纠正这一点,我看到其他地方无法找到解决方案。

1 个答案:

答案 0 :(得分:0)

这个问题似乎与解析器有关,因为它只表现在lxml解析器(在许多系统上都是默认的)。使用股票html.parser解决它:

for link in bs.BeautifulSoup(response, 'html.parser',
                             parseOnlyThese=SoupStrainer('a')):
    if link.has_attr('href'):
        print(link['href'])