我正在使用 Beautifulsoup4 和 Souptrainer 和 Python 3.3 从网页获取所有链接。以下是重要的代码片段:
r = requests.get(adress, headers=headers)
for link in BeautifulSoup(r.text, parse_only=SoupStrainer('a')):
if hasattr(link, 'href'):
我测试了一些网页,效果很好,但今天使用时
adress = 'http://www.goldentigercasino.de/'
我认识到 hasattr(link, 'href') 总是返回 TRUE,即使没有这样的 'href' 字段,就像在 goldentigercasino.de 示例中一样。因为我迟到使用链接['href'] 时遇到麻烦,因为它根本不存在。
我还尝试了这样的解决方法:
test = requests.get('http://www.goldentigercasino.de/')
for link in BeautifulSoup(test.text, parse_only=SoupStrainer('a',{'href': not None})):
可以按需要工作,除了它还返回 Doctype:
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"
由于与上述相同的原因,这也造成了麻烦。
我的问题:为什么 hasattr 总是返回 true,我该如何解决?如果 hasattr 没有可能,我该如何解决它不返回 DOCTYPE 的解决方法?
致以真诚的感谢和诚挚的问候!