首页 > 解决方案 > 在 bs4.element.Tag 中查找链接

问题描述

我用这个提取了我想要的链接:

link_soup = soup.find_all('ul', 'pagination')

但现在我不能使用link_soup[0].find_all('a')['href'],如果我使用link_soup[0].find('a')['href']

它只显示不是我想要的第一个链接。我将如何在列表中返回所有链接?

下面的片段:

<ul class="pagination">
<li><a href="link">&lt;&lt;</a></li>
<li><a href="link">&lt;</a></li>
<li class="hidden-xs"><a href="link">1</a></li>
<li class="hidden-xs active"><a href="link">2</a></li>
<li class="hidden-xs"><a href="link">3</a></li>
<li class="hidden-xs"><a href="link">4</a></li>
<li class="hidden-xs"><a href="link">5</a></li>
<li><a href="link"> &gt;</a></li>
<li><a href="link"> &gt;&gt;</a></li>
</ul>

标签: pythonbeautifulsoup

解决方案


首先你需要找到parent标签使用find,然后全部child使用find_all。希望这会有所帮助

from bs4 import BeautifulSoup
html="""<html><ul class="pagination">
<li><a href="link">&lt;&lt;</a></li>
<li><a href="link">&lt;</a></li>
<li class="hidden-xs"><a href="link">1</a></li>
<li class="hidden-xs active"><a href="link">2</a></li>
<li class="hidden-xs"><a href="link">3</a></li>
<li class="hidden-xs"><a href="link">4</a></li>
<li class="hidden-xs"><a href="link">5</a></li>
<li><a href="link"> &gt;</a></li>
<li><a href="link"> &gt;&gt;</a></li>
</ul></html>"""

soup=BeautifulSoup(html,"html.parser")
ul=soup.find('ul')
for a in ul.find_all('a'):
  print(a['href'])

输出 :

link
link
link
link
link
link
link
link
link

推荐阅读