- Beautiful Soup 教程
- Beautiful Soup - 首页
- Beautiful Soup - 概述
- Beautiful Soup - 网页抓取
- Beautiful Soup - 安装
- Beautiful Soup - 解析页面
- Beautiful Soup - 对象类型
- Beautiful Soup - 检查数据源
- Beautiful Soup - 抓取 HTML 内容
- Beautiful Soup - 通过标签导航
- Beautiful Soup - 通过 ID 查找元素
- Beautiful Soup - 通过类查找元素
- Beautiful Soup - 通过属性查找元素
- Beautiful Soup - 搜索树
- Beautiful Soup - 修改树
- Beautiful Soup - 解析文档的一部分
- Beautiful Soup - 查找元素的所有子元素
- Beautiful Soup - 使用 CSS 选择器查找元素
- Beautiful Soup - 查找所有注释
- Beautiful Soup - 从 HTML 中抓取列表
- Beautiful Soup - 从 HTML 中抓取段落
- BeautifulSoup - 从 HTML 中抓取链接
- Beautiful Soup - 获取所有 HTML 标签
- Beautiful Soup - 获取标签内的文本
- Beautiful Soup - 查找所有标题
- Beautiful Soup - 提取标题标签
- Beautiful Soup - 提取电子邮件 ID
- Beautiful Soup - 抓取嵌套标签
- Beautiful Soup - 解析表格
- Beautiful Soup - 选择第 n 个子元素
- Beautiful Soup - 根据标签内的文本搜索
- Beautiful Soup - 删除 HTML 标签
- Beautiful Soup - 删除所有样式
- Beautiful Soup - 删除所有脚本
- Beautiful Soup - 删除空标签
- Beautiful Soup - 删除子元素
- Beautiful Soup - find 与 find_all 的区别
- Beautiful Soup - 指定解析器
- Beautiful Soup - 比较对象
- Beautiful Soup - 复制对象
- Beautiful Soup - 获取标签位置
- Beautiful Soup - 编码
- Beautiful Soup - 输出格式
- Beautiful Soup - 美化输出
- Beautiful Soup - NavigableString 类
- Beautiful Soup - 将对象转换为字符串
- Beautiful Soup - 将 HTML 转换为文本
- Beautiful Soup - 解析 XML
- Beautiful Soup - 错误处理
- Beautiful Soup - 故障排除
- Beautiful Soup - 移植旧代码
- Beautiful Soup - 函数参考
- Beautiful Soup - contents 属性
- Beautiful Soup - children 属性
- Beautiful Soup - string 属性
- Beautiful Soup - strings 属性
- Beautiful Soup - stripped_strings 属性
- Beautiful Soup - descendants 属性
- Beautiful Soup - parent 属性
- Beautiful Soup - parents 属性
- Beautiful Soup - next_sibling 属性
- Beautiful Soup - previous_sibling 属性
- Beautiful Soup - next_siblings 属性
- Beautiful Soup - previous_siblings 属性
- Beautiful Soup - next_element 属性
- Beautiful Soup - previous_element 属性
- Beautiful Soup - next_elements 属性
- Beautiful Soup - previous_elements 属性
- Beautiful Soup - find 方法
- Beautiful Soup - find_all 方法
- Beautiful Soup - find_parents 方法
- Beautiful Soup - find_parent 方法
- Beautiful Soup - find_next_siblings 方法
- Beautiful Soup - find_next_sibling 方法
- Beautiful Soup - find_previous_siblings 方法
- Beautiful Soup - find_previous_sibling 方法
- Beautiful Soup - find_all_next 方法
- Beautiful Soup - find_next 方法
- Beautiful Soup - find_all_previous 方法
- Beautiful Soup - find_previous 方法
- Beautiful Soup - select 方法
- Beautiful Soup - append 方法
- Beautiful Soup - extend 方法
- Beautiful Soup - NavigableString 方法
- Beautiful Soup - new_tag 方法
- Beautiful Soup - insert 方法
- Beautiful Soup - insert_before 方法
- Beautiful Soup - insert_after 方法
- Beautiful Soup - clear 方法
- Beautiful Soup - extract 方法
- Beautiful Soup - decompose 方法
- Beautiful Soup - replace_with 方法
- Beautiful Soup - wrap 方法
- Beautiful Soup - unwrap 方法
- Beautiful Soup - smooth 方法
- Beautiful Soup - prettify 方法
- Beautiful Soup - encode 方法
- Beautiful Soup - decode 方法
- Beautiful Soup - get_text 方法
- Beautiful Soup - diagnose 方法
- Beautiful Soup 有用资源
- Beautiful Soup - 快速指南
- Beautiful Soup - 有用资源
- Beautiful Soup - 讨论
Beautiful Soup - 从 HTML 中抓取列表
网页通常以有序或无序列表的形式包含重要的数据。使用 Beautiful Soup,我们可以轻松地提取 HTML 列表元素,将数据转换为 Python 对象,并存储在数据库中以进行进一步分析。在本章中,我们将使用 find() 和 select() 方法从 HTML 文档中抓取列表数据。
搜索解析树的最简单方法是按其名称搜索标签。soup.<tag> 获取给定标签的内容。
HTML 提供 <ol> 和 <ul> 标签来编写有序和无序列表。像任何其他标签一样,我们可以获取这些标签的内容。
我们将使用以下 HTML 文档 -
<html>
<body>
<h2>Departmentwise Employees</h2>
<ul id="dept">
<li>Accounts</li>
<ul id='acc'>
<li>Anand</li>
<li>Mahesh</li>
</ul>
<li>HR</li>
<ol id="HR">
<li>Rani</li>
<li>Ankita</li>
</ol>
</ul>
</body>
</html>
按标签抓取列表
在上面的 HTML 文档中,我们有一个顶级 <ul> 列表,在其内部还有一个 <ul> 标签和另一个 <ol> 标签。我们首先将文档解析到 soup 对象中,并检索 soup.ul Tag 对象中第一个 <ul> 的内容。
示例
from bs4 import BeautifulSoup
fp = open('index.html')
soup = BeautifulSoup(fp, 'html.parser')
lst=soup.ul
print (lst)
输出
<ul id="dept"> <li>Accounts</li> <ul id="acc"> <li>Anand</li> <li>Mahesh</li> </ul> <li>HR</li> <ol id="HR"> <li>Rani</li> <li>Ankita</li> </ol> </ul>
更改 lst 的值以指向 <ol> 元素以获取内部列表。
lst=soup.ol
输出
<ol id="HR"> <li>Rani</li> <li>Ankita</li> </ol>
使用 select() 方法
select() 方法主要用于使用 CSS 选择器获取数据。但是,您也可以向其传递标签。在这里,我们可以将 ol 标签传递给 select() 方法。select_one() 方法也可用。它获取给定标签的第一个匹配项。
示例
from bs4 import BeautifulSoup
fp = open('index.html')
soup = BeautifulSoup(fp, 'html.parser')
lst=soup.select("ol")
print (lst)
输出
[<ol id="HR"> <li>Rani</li> <li>Ankita</li> </ol>]
使用 find_all() 方法
find() 和 fin_all() 方法更全面。您可以将各种类型的过滤器(例如标签、属性或字符串等)传递给这些方法。在这种情况下,我们希望获取列表标签的内容。
在以下代码中,find_all() 方法返回 <ul> 标签中所有元素的列表。
示例
from bs4 import BeautifulSoup
fp = open('index.html')
soup = BeautifulSoup(fp, 'html.parser')
lst=soup.find_all("ul")
print (lst)
我们可以通过包含 attrs 参数来细化搜索过滤器。在我们的 HTML 文档中,<ul> 和 <ol> 标签已指定了各自的 id 属性。因此,让我们获取具有 id="acc" 的 <ul> 元素的内容。
示例
from bs4 import BeautifulSoup
fp = open('index.html')
soup = BeautifulSoup(fp, 'html.parser')
lst=soup.find_all("ul", {"id":"acc"})
print (lst)
输出
[<ul id="acc"> <li>Anand</li> <li>Mahesh</li> </ul>]
这是另一个示例。我们收集所有带有 <li> 标签的元素,其内部文本以“A”开头。find_all() 方法接受一个关键字参数字符串。如果 startingwith() 函数返回 True,则它将获取文本的值。
示例
from bs4 import BeautifulSoup
def startingwith(ch):
return ch.startswith('A')
fp = open('index.html')
soup = BeautifulSoup(fp, 'html.parser')
lst=soup.find_all('li',string=startingwith)
print (lst)
输出
[<li>Accounts</li>, <li>Anand</li>, <li>Ankita</li>]