Python中的BeautifulSoup链接属性



我在探索BeautifulSoup时引用了Ryan Mitchell的";使用Python进行Web刮擦";。

有一些示例代码解释了从维基百科中抓取文章链接的过程。为了简洁起见,我省略了导入代码。代码为:

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"作为属性,这不是可以的吗?提前谢谢!

你的思路是有效的,但试着尝试添加一个else语句并打印链接。在else语句中的attrs,看看是否有任何链接没有href属性,这不应该是真的,但你永远不会知道,祝你好运。

因为从该行返回

for link in bsObj.findAll("a", href = re.compile("^(/wiki/)((?!:).)*$")):

不仅是"href",还有任何其他属性

因此,如果链接.attrs中的'href'为确保您只获得attribut'href'

相关内容

  • 没有找到相关文章

最新更新