【发布时间】:2013-07-30 10:01:54
【问题描述】:
我正在使用 Beautifulsoup4 和 Soupstrainer 以及 Python 3.3 来获取网页中的所有链接。以下是重要代码-sn-p:
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 示例中一样。 因为我迟到使用 link['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 的解决方法?
非常感谢和最好的问候!
【问题讨论】:
标签: python python-3.x web-scraping beautifulsoup hasattr