Python爬虫之xlml解析库(全面了解)

作者:jingxian 时间:2023-03-30 21:16:17 

1.Xpath

Xpath是一门在XML中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。XQuery和xpoint都是构建于xpath表达之上

2.节点

父(parent),子(children),兄弟(sibling),先辈(ancetstor),后代(Decendant)

3.选取节点

路径表达式

表达式描述路径表达式结果
nodename选取此节点上的所有的子节点bookstore选取bookstore元素的所有子节点
/从根节点上选取/bookstore选取根元素bookstore,为绝对路径
//从匹配选择的当前节点选择文档中的节点,不考虑位置//book选取所有的book子元素,而不管他们在文档的位置
.选取当前节点bookstore//book选择bookstore后代中所有的book元素
..选取当前节点的父节点

@选取属性//@lang选取名为lang的所有属性

谓语

谓语用来查找某个特定的节点或者包含某个指定的值的节点

谓语被嵌在方括号中

路径表达式结果
/bookstore/book[1]选取属于bookstore子元素的第一个book元素
/bookstore/book[last()]选取属于bookstore子元素的最后book元素
/bookstore/book[last()-1]选取属于bookstore子元素的倒数第二个book元素
/bookstore/book[position()<3]选取最前面的两个属于bookstore元素的子元素的book元素
//title[@lang='eng']选取所有的title元素,并且这些元素拥有值为eng的lang属性
/bookstore/book[price>35.0]选取bookstore元素的所有book元素,且其中的price值大于35.0

选取未知节点(通配符)

*匹配任何 元素节点

@*匹配任何属性节点

node()匹配任何类型的节点

4.lxml用法


#!/usr/bin/python
#_*_coding:utf-8_*_

from lxml import etree

text='''
<div>
<ul>
 <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" >first item</a></li>
 <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li>
 <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li>
 <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li>
 <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a>
</ul>
</div>
 '''

# html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能
# result=etree.tostring(html) #将html对象转化为字符串

html=etree.parse('hello.html')
# result=etree.tostring(html,pretty_print=True)
# print result
print type(html)
result= html.xpath('//li')
print result
print len(result)
print type(result)
print type(result[0])
print html.xpath('//li/@class') # 获取li标签下的所有的class
print html.xpath('//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]') #获取li标签下href为link1的<a>标签
print html.xpath('//li//span') #获取li标签下所有的span标签
print html.xpath('//li[last()-1]/a')[0].text #获取倒数第二个元素的内容
标签:python,爬虫,xlml,解析库
0
投稿

猜你喜欢

  • 详解MySQL的用户密码过期功能

    2024-01-21 01:29:40
  • python中对信号的处理详解

    2021-05-29 08:37:41
  • fetch 使用及如何接收JS传值

    2024-04-29 13:11:21
  • vue2.0 循环遍历加载不同图片的方法

    2024-05-08 10:24:50
  • asp 批量删除选中的多条记录

    2011-03-29 10:33:00
  • 使用 createProcessingInstruction 方法不能输出 encoding 的解决方法

    2009-03-10 18:22:00
  • C#中使用SQLite数据库的方法介绍

    2024-01-26 00:31:49
  • python3在各种服务器环境中安装配置过程

    2021-10-27 22:49:55
  • 如何利用pyecharts画好看的饼状图

    2021-04-19 09:07:19
  • Python入门学习之类的相关知识总结

    2021-12-18 10:02:38
  • Django如何实现RBAC权限管理

    2021-05-20 19:14:27
  • asp关键词屏蔽过滤函数代码

    2010-05-04 16:32:00
  • Pytorch四维Tensor转图片并保存方式(维度顺序调整)

    2023-09-11 23:26:54
  • Python 条件判断的缩写方法

    2021-04-20 16:06:20
  • 在Go语言程序中使用gojson来解析JSON格式文件

    2023-07-02 14:19:52
  • pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异

    2021-08-31 05:15:21
  • tensorflow对图像进行拼接的例子

    2022-05-30 02:11:49
  • Python timeit模块原理及使用方法

    2023-09-22 08:19:18
  • Vue计时器的用法详解

    2024-04-28 09:28:51
  • 手写Vue源码之数据劫持示例详解

    2023-07-02 17:01:28
  • asp之家 网络编程 m.aspxhome.com