第二篇爬虫之基础XPath模块和lxml类库
2017-11-19 本文已影响188人
博行天下
简介:XPath将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素,首先了解下XML文档,熟悉XML结构,同时还需要了解HTML DOM 树
1. XML的节点关系
-
父(Parent)
- 每个元素以及属性都有一个父
-
子(Children)
- 元素节点可有零个、一个或多个子
-
同胞(Sibling)
- 拥有相同的父的节点
-
先辈(Ancestor)
- 某节点的父、父的父,等等
-
后代(Descendant)
- 某个节点的子,子的子,等等
2. XPath的选取节点
- XPath 使用路表达式来选取 XML 文档中的节点或者节点集
表达式 | 描述 |
---|---|
/ | 从根节点选取 |
2 | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@class | 选取名为 class 的所有属性 |
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node | 匹配任何类型的节点 |
//book/title //book/price | 选取 book 元素的所有 title 和 price 元素 |
-
XPath的运算符
xpath.png
3. lxml库的使用
- lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据,lxml python 官方文档,pip 安装:pip install lxml即可
1. #利用etree.HTML,将字符串解析为HTML文档
html = etree.HTML(text)
# 按字符串序列化XML文档
result = etree.tostring(html)
print(result)
2. from lxml import etree
# 读取外部文件 hello.html
html = etree.parse('./hello.html')
result = html.xpath('//li') # 获取所有的 <li> 标签
result = etree.tostring(html, pretty_print=True)
print(result)