- 积分
- 333
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 注册时间
- 2024-2-22
- 最后登录
- 1970-1-1
- 阅读权限
- 30
- 听众
- 收听
初级工程师
|
本帖最后由 泰克Tech 于 2024-10-18 15:59 编辑
【Python爬虫】
Beautifulsoup模块用法详解
BeautifulSoup 是一个Python库,主要用于从HTML或XML文件中提取数据。它创建了一个解析树,用于从文档中提取数据,并提供了丰富的API来搜索、修改这个树。BeautifulSoup 本身并不提供网络连接功能,它通常与像Requests这样的HTTP库一起使用,以便从网络上获取HTML或XML内容,并随后使用BeautifulSoup来解析这些数据。
使用场景:
网页爬虫:抓取网页内容,提取有用信息(如新闻标题、链接、商品价格等)。
数据抓取:从Web应用中抓取数据,用于数据分析、机器学习等。
自动化测试:模拟用户与网页的交互,检查网页内容是否符合预期。
网页内容修改:修改网页内容,生成新的HTML/XML文档,用于测试、展示或其他目的。
一、安装
可以使用以下命令安装 BeautifulSoup:
pip install beautifulsoup4
二、基本用法
1导入库
from bs4 import BeautifulSoup
2初始化 BeautifulSoup 对象
可以从字符串中创建
添加图片注释,不超过 140 字(可选)
也可以从文件中读取:
添加图片注释,不超过 140 字(可选)
上例中BeautifulSoup对象soup代表整个 HTML 文档树。可以通过它使用各种方法(如find、find_all等)来访问文档的各个部分,包括特定的标签、标签集合等。
三、主要对象
1 Tag
对应HTML中的标签,通过以下方式访问:
添加图片注释,不超过 140 字(可选)
2 NavigableString
表示标签中的文本内容。使用string属性获取到标签中的文本内容,这个文本内容的类型就是NavigableString。
四、搜索文档树
1 find()和find_all()方法
(1)find()方法
用于查找文档中符合条件的第一个元素。如果找到了匹配的元素,它会返回一个BeautifulSoup的Tag对象;如果没有找到,则返回None。
基本用法:
tags = soup.find(name, attrs, recursive, string, **kwargs)
添加图片注释,不超过 140 字(可选)
(2)find_all()方法
用于查找文档中所有符合条件的元素,并返回一个包含这些元素的列表。如果没有找到任何匹配的元素,则返回一个空列表。
基本用法:
tags = soup.find_all(name, attrs, recursive, string, limit, **kwargs)
与find()方法类似,但多了一个limit参数:
limit:整数,用于限制返回的元素数量
添加图片注释,不超过 140 字(可选)
可以通过指定标签名、属性等参数来进行更精确的搜索。
div_tags = soup.find_all('div', class_='类选择器名称')
(3)CSS定位器
class定位元素
soup.select(.属性)
添加图片注释,不超过 140 字(可选)
id定位
soup.select(#属性)
添加图片注释,不超过 140 字(可选)
五、遍历文档树
1 下行遍历
contents属性可以获取一个标签的直接子节点列表。
添加图片注释,不超过 140 字(可选)
输出结果如下:
添加图片注释,不超过 140 字(可选)
children属性返回一个可迭代对象,可以用来遍历直接子节点。
添加图片注释,不超过 140 字(可选)
输出结果如下:
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
2 上行遍历
parent属性可以获取一个标签的直接父节点。
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
parents属性返回一个生成器,可以用来遍历所有先辈节点。
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
输出结果如下:
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
3 平行遍历
对于同一个父节点下的兄弟节点,可以使用next_sibling和previous_sibling属性来访问下一个和上一个兄弟节点。
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
next_siblings和previous_siblings属性返回生成器,可以用来遍历所有后续和前面的兄弟节点。
六、修改文档树
1 修改标签的属性
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
输出结果如下:
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
2修改标签的内容
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
输出结果如下:
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
3添加和删除标签
[backcolor=rgba(0, 0, 0, 0.1)]
[backcolor=rgba(0, 0, 0, 0.1)]
添加图片注释,不超过 140 字(可选)
END
更多精彩内容 尽在泰克教育
请持续关注
|
|