使用BeautifulSoup的find(),程序中只有一行:

print(table.find('td','monsters'))


这是上一行的输出:

<td class="monsters">
<a href="/m154"><div class="mim mim-154"></div></a>
<a href="/m153"><div class="mim mim-153"></div></a>
<a href="/m152"><div class="mim mim-152"></div></a>
<a href="/m155"><div class="mim mim-155"></div></a>
<a href="/m147"><div class="mim mim-147"></div></a>
</td>


现在,我想解析所有五个href,以便输出如下内容:

/m154
/m153
/m152
/m155
/m147


我试图通过将print更改为find()find_all()行转换为for循环,然后在foor循环中使用.a['href']检索href。但是,无论我尝试什么,我总是只能获得一个条目,而不是五个。有关检索多个href的任何建议?看到find_all()返回一个数组,将find_all()直接放在a的父级上方有意义吗?

最佳答案

输入:

page = """<td class="monsters">
<a href="/m154"><div class="mim mim-154"></div></a>
<a href="/m153"><div class="mim mim-153"></div></a>
<a href="/m152"><div class="mim mim-152"></div></a>
<a href="/m155"><div class="mim mim-155"></div></a>
<a href="/m147"><div class="mim mim-147"></div></a>
</td>"""


from bs4 import BeautifulSoup
soup = BeautifulSoup(page, "html.parser") # your source page parsed as html
links = soup.find_all('a', href=True) # get all links having href attribute
for i in links:
    print(i['href'])


结果:

/m154
/m153
/m152
/m155
/m147

关于python - 使用BeautifulSoup解析一位家长中的多个href,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45812998/

10-12 00:33
查看更多