设为首页收藏本站language→→ 语言切换

鸿鹄论坛

 找回密码
 论坛注册

QQ登录

先注册再绑定QQ

查看: 401|回复: 0
收起左侧

[其他] 泰涨知识 | 【Python爬虫】Beautifulsoup模块用法详解

[复制链接]
发表于 2024-10-18 15:53:48 | 显示全部楼层 |阅读模式
本帖最后由 泰克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

更多精彩内容 尽在泰克教育

请持续关注
1 课程预约【鸿鹄论坛】300x300px.jpg






您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2024-11-21 18:34 , Processed in 0.071572 second(s), 16 queries , Redis On.  

  Powered by Discuz!

  © 2001-2024 HH010.COM

快速回复 返回顶部 返回列表