解析工具的使用——Beautiful Soup、XPath

本文详细介绍了如何使用Beautiful Soup库与XPath进行网页解析,包括Beautiful Soup的prettify、节点选择器、属性和属性值的获取,以及XPath的基本规则、属性匹配和节点轴选择。文中还给出了实战示例,帮助理解这两种工具在网页解析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 Beautiful Soup
Beautiful Soup借助网页的结构和属性等特性来解析网页
其在解析时 实际上依赖解析器,它 除了支持Python标准库中的HTML解析器外,还支持一些第三方解析器(比如lxml)——我选择使用lxml
prettify()
可以把要解析的字符串以标准的缩进格式输出

返回——bs4.element.Tag类型,具有str属性

节点选择器——根据属性**来选择
直接调用节点的名称就可以选择节点元素,再调用string属性就可以得到节点内的文本了
1:这种选择方式速度非常快:
2:如果单个节点结构层次非常清晰,可以选用这种方式来解析
eg:
soup.title.string()
输出HTML中title节点的文本内容
注:soup.title可以选出HTML中的title节点,
再调用string属性就可以得到里面的文本了
——调用string属性来获取文本的值

提取信息
1:获取节点的名称——调用name
print(soup.title.name)

2:获取属性和属性值——调用attrs(获取所有属性,一个节点 有时候不止一个属性)

print(soup.p.attrs)

返回字典{}形式,并且 把选择的节点的所有属性和属性值组合成一个字典

{'class': ['title'], 'name': 'dromouse'}

注:
有的返回结果是字符串,比如,name属性的值是唯一的,返回的结果就是单个字符串。
有的返回结果是字符串组成的列表。对于class,一个节点元素可能有多个class,所以返回的是列表。
∴在实际处理过程中,我们要注意判断类型

如果要获取name属性值,就相当于从字典中获取某个键值,只需要用中括号加属性名就可以了。比如,要获取name属性值,就可以通过attrs[‘name’]来得到

还可以 (法2)
直接在节点元素后面加中括号,传入属性名就可以获取属性值了。不写attrs

print(soup.p['name'])#

——输出

dromouse

3:获取 节点元素 包含的文本内容——调用string

print(soup.p.string)

获取的是 第一个 p节点的文本

嵌套选择:
每一个返回结果都是bs4.element.Tag类型,它可以被继续调用 来进行下一步的选择
eg:
获取了head节点元素(Tag类型),我们可以继续调用he

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值