Python BeautifulSoup 搜索树节点
Python BeautifulSoup 是一个强大的 HTML 解析库,我们可以使用它来搜索 HTML 树节点。下面详细介绍一下如何搜索树节点。
首先,导入 BeautifulSoup 库:
from bs4 import BeautifulSoup
接着,我们需要一个 HTML 字符串作为输入,例如:
html_doc = """ <html> <head> <title>皮蛋编程</title> </head> <body> <h1>文章标题</h1> <p>这是一篇文章。</p> <ul> <li class="item"><a href="pidancode.com">皮蛋编程</a></li> <li class="item"><a href="www.baidu.com">百度</a></li> <li class="item"><a href="www.taobao.com">淘宝</a></li> </ul> </body> </html> """
我们可以使用 BeautifulSoup 对象来解析这个 HTML 字符串:
soup = BeautifulSoup(html_doc, 'html.parser')
接着,我们可以使用 BeautifulSoup 对象的 find() 或 find_all() 方法来搜索树节点。find() 方法返回第一个匹配的节点,find_all() 方法返回所有匹配的节点,可以使用 CSS 选择器来指定搜索条件。
例如,我们可以使用 find_all() 方法和 CSS 选择器 'a' 来查找所有链接节点:
links = soup.find_all('a') for link in links: print(link.get('href'))
输出:
pidancode.com www.baidu.com www.taobao.com
我们还可以使用 find() 方法和 CSS 选择器 '.item' 来查找第一个 class 属性为 'item' 的节点:
item = soup.find(class_='item') print(item)
输出:
<li class="item"><a href="pidancode.com">皮蛋编程</a></li>
注意,class 是 Python 的关键字,不能直接用作参数名,所以要使用 class_ 参数来指定 class 属性。
除了使用 CSS 选择器,我们还可以使用标签名、属性、文本等来搜索节点。例如,以下代码可以查找所有 ul 标签及其下面的所有 li 标签:
ul = soup.find('ul') lis = ul.find_all('li') for li in lis: print(li)
输出:
<li class="item"><a href="pidancode.com">皮蛋编程</a></li> <li class="item"><a href="www.baidu.com">百度</a></li> <li class="item"><a href="www.taobao.com">淘宝</a></li>
如果我们想要查找某个节点的子节点或父节点,可以使用子节点表示法或父节点表示法。例如,以下代码查找第一个 a 标签节点的父节点 li:
a = soup.find('a') li = a.parent print(li)
输出:
<li class="item"><a href="pidancode.com">皮蛋编程</a></li>
如果我们要查找某个节点的所有子节点或父节点,可以使用 find_all() 方法或 parents 属性。例如,以下代码查找所有 ul 节点的子节点 li:
uls = soup.find_all('ul') for ul in uls: lis = ul.find_all('li') for li in lis: print(li)
输出:
<li class="item"><a href="pidancode.com">皮蛋编程</a></li> <li class="item"><a href="www.baidu.com">百度</a></li> <li class="item"><a href="www.taobao.com">淘宝</a></li>
以上就是 Python BeautifulSoup 搜索树节点的详细介绍。
相关文章