Python学习之旅
Python核心编程爬虫篇2021.03.29
指导教师:逻辑教育讲师Jerry
一、Xpath概念
- Xpath(XML Path Languag):一种XML的查询语言,可以在 XML 文档中通过元素和属性进行导航,在XML树状结构中寻找节点
- XML 可扩展标记语言
- html 超文本标记语言
二、节点介绍
- XML文档
- XML文档中的节点例子
<bookstore>
文档节点
<author>JK.Rowing</author>
元素节点
lang='eng'
属性节点 - 其中
父(Parent) :book元素是title、author、year、price元素的父
子(Children) :title、author、year、price都是book元素的子
同胞(Sibling): title、author、year、price都是同胞
先辈(Ancestor) title元素的先辈是 book元素和bookstore元素 - xpath路径表达式
表达式 | 描述 |
---|---|
nodename |
选取此节点的所有子节点 |
/ |
从根节点选取 |
// |
从匹配选择的当前节点选取文档中的节点,不考虑他们的位置 |
. |
选取当前节点 |
.. |
选取当前节点的父节点 |
@ |
选取属性 |
- 查找某个特定的节点或者包含某个指定的值的节点
路径表达式 | 结果 |
---|---|
/bookstore/book[1] |
选取属于bookstore子元素的第一个book元素 |
/bookstore/book[last()] |
选取属于bookstore子元素的最后一个book元素 |
/bookstore/book[last()-1] |
选取属于bookstore子元素的倒数第二个book元素 |
/bookstore/book[positio()<3] |
选取属于bookstore子元素的最前面两个book元素 |
//title[@lang] |
选取所有含lang属性的title元素 |
//title[@lang='eng'] |
选取所有含lang属性值等于eng的title元素 |
/bookstore/book[price<35.00] |
选取bookstore子元素中price元素值大于35的所有book元素 |
三、Xpath使用
1.工具安装
- 常用节点选择工具
- 谷歌浏览器插件:Xpath Helper
- 火狐浏览器插件:XPath Checker(Xpath Finder)
- 火狐浏览器Xpath Finder安装
- 1、点击右上角菜单,选择附加组件
- 2、在搜索框内输入Xpath搜索
- 3、选择要安装的插件
- 4、
- 5、
- 6
- 1、点击右上角菜单,选择附加组件
- Xpath Finder的使用
- 1.打开关闭:快捷键Ctrl+shift+u
- 2.打开后光标会变成十字架,点击要查找节点的要素浏览器下发就会出现
- 1.打开关闭:快捷键Ctrl+shift+u
2、lxml模块的使用
在Python中,我们安装lxml
库来使⽤XPath
技术。lxml
是 HTML/XML
的解析器,主要的功能是解析和提取HTML/XML
数据,并利⽤etree.HTML
方法,将字符串转化为Element
对象,再以Xpath
查询数据节点
lxml
模块安装:pip install lxml
,官方文档链接:https://lxml.de/index.html
"""lxml练习使用"""
from lxml import etree
import csv
wb_data = """
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
"""
element = etree.HTML(wb_data)