1、解析库的使用
1、XPath的使用(XML Path Language)
1、常用规则
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
示例://title[@lang=‘eng’]
代表选择所有名称为title,同时属性lang值为eng的节点
2、如果想获取li节点内部的文本,两种方式:
-
先选取a节点再获取文本
result = html.xpath('//li[@class="item-0"]/a/text()
获取子节点a的文本 -
使用//选取
result = html.xpath('//li[@class="item-0"]//text()
获取所有子孙节点的文本
3、属性多值匹配
使用contains()
函数,第一个参数传入属性名称,第二个参数传入属性值,只要此属性包含所传入的值就完成匹配
text = '''
<li class="li li-first"><a href="">first time</a></li>
'''
result = html.xpath('//li[contains(@class,"li")]/a/text()')
4、多属性匹配
根据多个属性确定一个节点,用运算符and
连接,此外还有很多别的运算符用法相同
text = '''
<li class="li li-first" name="item"><a href="">first time</a></li>
'''
result = html.xpath('//li[contains(@class,"li") and @name="item"]/a/text()')
2、Beautiful Soup的使用
1、是Python的一个HTML或XML的解析库,用来从网页中提取数据,会自动将输入文档转换为Unicode编码,输出文档转换为UTF-8编码。
2、
- contents属性得到的是直接子节点的列表
- descendants属性会递归查询所有子节点,得到所有的子孙节点
- next_sibling和p