博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫之Xpath的使用
阅读量:5117 次
发布时间:2019-06-13

本文共 1544 字,大约阅读时间需要 5 分钟。

什么是Xpath

Xpath是一门在HTML、XML文档中查找信息的语言,可以用来在HTML/XML文档中对元素和属性进行遍历

XML:可扩展标记语言,被设计为传输和存储数据,其焦点是数据内容,每个XML的标签叫做节点,

Xpath节点选择工具:

Chrome插件XPath  Helper

开源的XPath表达式编辑工具XMLQuire(XML格式文件可用)

Firefox插件XPathChecker

Xpath语法

/表示根节点,

/html/head/title/text()

学习重点:

1、a/text()   a的文本内容

a//text()  a下的所有文本内容

//a[text()='下一页']选择文本为下一页的a标签

2、/html/head/link/@href   获取属性

//ul[@id='detail-list']/li/p/text()

./当前节点     ../上一级节点

3.//表示从html的任意位置开始选择

//li  整个文档中的li标签

 

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

谓语(Predicates)

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

谓语被嵌在方括号中。

实例

在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:

 

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

 

选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

LXML的使用

导入lxml的etree库,from lxml   import etree

利用etree.HTML将字符串转化为Element对象

Element对象具有Xpath方法,

HTML=etree.HTML(text)

lxml可以自动修正html代码,但是也可能会改错,使用etree.tostring来查看修正后的HTML,然后根据修改后的HTML使用Xpath。

 

文件读取

除了直接读取字符串,还支持从文件读取内容。比如我们新建一个文件叫做 hello.html

 利用 parse 方法来读取文件

 

from lxml import etreehtml = etree.parse('hello.html')result = etree.tostring(html, pretty_print=True)print(result)

 

 

 

 

XPath实例测试

(1)获取所有的 <li> 标签

from lxml import etreehtml = etree.parse('hello.html')print type(html)result = html.xpath('//li')print resultprint len(result)print type(result)print type(result[0])

 

[
,
,
,
,
]5

 可见,etree.parse 的类型是 ElementTree,通过调用 xpath 以后,得到了一个列表,包含了 5 个 <li> 元素,每个元素都是 Element 类型

 

转载于:https://www.cnblogs.com/weidaijie/p/10447893.html

你可能感兴趣的文章
NOIP2013 提高组 Day1
查看>>
个人对vue生命周期的理解
查看>>
cocos2dx 3.x simpleAudioEngine 长音效被众多短音效打断问题
查看>>
存储(硬件方面的一些基本术语)
查看>>
观察者模式
查看>>
Weka中数据挖掘与机器学习系列之基本概念(三)
查看>>
Win磁盘MBR转换为GUID
查看>>
大家在做.NET B/S项目的时候多用什么设技术啊?
查看>>
Java SE和Java EE应用的性能调优
查看>>
Android设计模式系列--原型模式
查看>>
免费的论文查重网站
查看>>
C语言程序第一次作业
查看>>
leetcode-Sort List
查看>>
中文词频统计
查看>>
了解node.js
查看>>
想做移动开发,先看看别人怎么做
查看>>
Eclipse相关集锦
查看>>
虚拟化架构中小型机构通用虚拟化架构
查看>>
继承条款effecitve c++ 条款41-45
查看>>
HTML+CSS学习笔记(九)
查看>>