我希望提出一个非常简单的问题。我遇到过以下代码,但未能找到合适的解释:
.attrs
函数究竟做了什么?['href']
部分的功能是什么,即该部分代码究竟执行了什么?以下是代码:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("url")
bsObj = BeautifulSoup(html)
for link in bsObj.findAll("a"):
if 'href' in link.attrs:
print (link.attrs['href'])
答案 0 :(得分:1)
让我们在导入后逐行进行
<a>
并循环遍历它们)<a href="">
- href是一个属性,那就存储在链接的.attrs属性中)'href':'http://something'
的字典)那里的缩进有点不对,print应该比if
更缩进答案 1 :(得分:1)
让我们自己尝试一下这个问题并看看:
from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://stackoverflow.com/q/39308028/1005215")
bsObj = BeautifulSoup(html)
i).attrs函数在这段代码中究竟做了什么
In [6]: bsObj.findAll("a")[30]
Out[6]: <a class="question-hyperlink" href="/questions/39308028/beautifuelsoup-python">Beautifuelsoup - Python</a>
In [7]: bsObj.findAll("a")[30].attrs
Out[7]:
{'class': ['question-hyperlink'],
'href': '/questions/39308028/beautifuelsoup-python'}
In [8]: type(bsObj.findAll("a")[30])
Out[8]: bs4.element.Tag
如果您阅读documentation,您会发现标签可能包含任意数量的属性。在元素编号30中,标记具有属性&#39; class&#39;和&#39; href&#39;
ii)最后[&#39; href&#39;]部分的功能是什么
In [9]: bsObj.findAll("a")[30]['href']
Out[9]: '/questions/39308028/beautifuelsoup-python'
如果您查看上面的输出,您会看到该标记有一个属性&#39; href&#39;并且上面的代码为我们提取了该属性的值。