【发布时间】:2021-04-09 11:14:03
【问题描述】:
我通过参考 Ryan Mitchell 的“Web Scraping with Python”来探索 BeautifulSoup。
有一些示例代码解释了从维基百科抓取文章链接。为简洁起见,我省略了导入代码。代码是:
html = urlopen("http://en.wikipedia.org")
bsObj = BeautifulSoup(html)
for link in bsObj.findAll("a", href = re.compile("^(/wiki/)((?!:).)*$")):
if 'href' in link.attrs:
print(link.attrs['href'])
我很困惑为什么代码需要包含 if 语句:
if 'href' in link.attrs:
findAll 函数不是返回所有具有指定href 的锚标记吗?因此,假设所有“链接”都将具有“href”作为属性不是可以吗? 提前谢谢!
【问题讨论】:
-
您遇到的确切错误是什么?您是否尝试在终端上打印错误?
-
您不能确定
a标记有链接(href 属性)。这就是测试 (if 'href' in link.attrs:...) 的用途。首先测试href是否在属性中,如果有则打印值。
标签: python web-scraping beautifulsoup findall