首页 > 编程 > Python > 正文

Python利用Beautiful Soup模块搜索内容详解

2020-02-23 04:29:09
字体:
来源:转载
供稿:网友

前言

我们将利用 Beautiful Soup 模块的搜索功能,根据标签名称、标签属性、文档文本和正则表达式来搜索。

搜索方法

Beautiful Soup 内建的搜索方法如下:

find() find_all() find_parent() find_parents() find_next_sibling() find_next_siblings() find_previous_sibling() find_previous_siblings() find_previous() find_all_previous() find_next() find_all_next()

使用 find() 方法搜索

首先还是需要建立一个 HTML 文件用来做测试。

<html><body><div class="ecopyramid"> <ul id="producers"> <li class="producerlist">  <div class="name">plants</div>  <div class="number">100000</div> </li> <li class="producerlist">  <div class="name">algae</div>  <div class="number">100000</div> </li> </ul> <ul id="primaryconsumers"> <li class="primaryconsumerlist">  <div class="name">deer</div>  <div class="number">1000</div> </li> <li class="primaryconsumerlist">  <div class="name">rabbit</div>  <div class="number">2000</div> </li> </ul> <ul id="secondaryconsumers"> <li class="secondaryconsumerlist">  <div class="name">fox</div>  <div class="number">100</div> </li> <li class="secondaryconsumerlist">  <div class="name">bear</div>  <div class="number">100</div> </li> </ul> <ul id="tertiaryconsumers"> <li class="tertiaryconsumerlist">  <div class="name">lion</div>  <div class="number">80</div> </li> <li class="tertiaryconsumerlist">  <div class="name">tiger</div>  <div class="number">50</div> </li> </ul></div></body></html>

我们可以通过 find() 方法来获得 <ul> 标签,默认情况下会得到第一个出现的。接着再获取 <li> 标签,默认情况下还是会得到第一个出现的,接着获得 <div> 标签,通过输出内容来验证是否获取了第一个出现的标签。

from bs4 import BeautifulSoupwith open('search.html','r') as filename: soup = BeautifulSoup(filename,'lxml')first_ul_entries = soup.find('ul')print first_ul_entries.li.div.string

find() 方法具体如下:

find(name,attrs,recursive,text,**kwargs) 

正如上代码所示,find() 方法接受五个参数:name、attrs、recursive、text 和 **kwargs 。name 、attrs 和 text 参数都可以在 find() 方法充当过滤器,提高匹配结果的精确度。

搜索标签

除了上面代码的搜索 <ul> 标签外,我们还可以搜索 <li> 标签,返回结果也是返回出现的第一个匹配内容。

tag_li = soup.find('li')# tag_li = soup.find(name = "li")print type(tag_li)print tag_li.div.string            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表