我想做的是获取重复多次的ul中a标签的href:例如:
<div class="contain">
<div id="0">
<ul class="drop">
<li><a href="some_link"></a></li>
<li><a href="some_link_1"></a></li>
<li><a href="some_link_2"></a></li>
<li><a href="some_link_3"></a></li>
</ul>
</div>
</div>
<div class="contain">
<div id="1">
<ul class="drop">
<li><a href="some_link_4"></a></li>
<li><a href="some_link_5"></a></li>
<li><a href="some_link_6"></a></li>
<li><a href="some_link_7"></a></li>
</ul>
</div>
</div>
<div class="contain">
<div id="a">
<ul class="drop">
<li><a href="some_link_7"></a></li>
<li><a href="some_link_8"></a></li>
<li><a href="some_link_9"></a></li>
<li><a href="some_link"></a></li>
</ul>
</div>
</div>
我想要的是获取这段代码中的所有 href。我该怎么办?
根据您对要使用的ul
元素中的所有href
所说的话,它会更准确:
links = [i['href'] for i in soup.select('.drop [href]')]
这使用父ul
的类名(第二快的选择器方法(与子[href]
相结合,子子将获取其中的所有href属性(不仅来自a
标签,而且来自父ul
中的任何内容(。
使用另一个答案,您将获得与文档中a
标签关联的所有href
,无论是否存在父ul
。
from bs4 import BeautifulSoup
html = '''<div class="contain">
<div id="0">
<ul class="drop">
<li><a href="some_link"></a></li>
<li><a href="some_link_1"></a></li>
<li><a href="some_link_2"></a></li>
<li><a href="some_link_3"></a></li>
</ul>
</div>
</div>
<div class="contain">
<div id="1">
<ul class="drop">
<li><a href="some_link_4"></a></li>
<li><a href="some_link_5"></a></li>
<li><a href="some_link_6"></a></li>
<li><a href="some_link_7"></a></li>
</ul>
</div>
</div>
<div class="contain">
<div id="a">
<ul class="drop">
<li><a href="some_link_7"></a></li>
<li><a href="some_link_8"></a></li>
<li><a href="some_link_9"></a></li>
<li><a href="some_link"></a></li>
</ul>
</div>
</div>'''
soup = BeautifulSoup(html)
for a in soup.find_all('a', href=True):
print "The URL:", a['href']
这将打印所有href
The URL: some_link
The URL: some_link_1
The URL: some_link_2
The URL: some_link_3
The URL: some_link_4
The URL: some_link_5
The URL: some_link_6
The URL: some_link_7
The URL: some_link_7
The URL: some_link_8
The URL: some_link_9
The URL: some_link
要获取所有链接的列表,您只需使用:
hrefLinks = [EachLink['href'] for EachLink in soup.find_all('a', href=True)]