该脚本假设提取所有超链接
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'
我如何纠正这一点,我看到其他地方无法找到解决方案。
答案 0 :(得分:0)
这个问题似乎与解析器有关,因为它只表现在lxml
解析器(在许多系统上都是默认的)。使用股票html.parser
解决它:
for link in bs.BeautifulSoup(response, 'html.parser',
parseOnlyThese=SoupStrainer('a')):
if link.has_attr('href'):
print(link['href'])