xpath教程 3 - xpath的小结
一、xpath提取内容
1、提取节点中最表层的文本
htmlobj.xpath("./text()")
在scrapy中用extract()[0]方法抽取文本。如:
temp['title'] = node.xpath('./text()').extract()[0].strip()
temp['title_url'] = node.xpath('./@href').extract()[0]
python中用到extract一般会是scrapy中获取meta内容。
2、提取节点中多嵌套的文本
htmlobj.xpath("string(.)").strip()
from lxml import etree
# 获取全部有意义正文文本
html_str="""<div>hah<a>六六六</a>cccc收拾收拾</div>"""
html_etree = etree.HTML(html_str) # 获取element 类型的html
all_content = html_etree.xpath('string(.)').strip()
print(all_content)
遇到gbk编码问题解决方案:
print(all_content.encode('gbk', 'ignore').decode('gbk'))
原文:https://www.jb51.net/article/143722.htm
输出:
hah六六六cccc收拾收拾
3、提取节点中属性的值
htmlobj.xpath("./@href")
<div class="item item-btn">
<input type="hidden" name="type" value="ML" />
</div>
html_str = response.content.decode()
html_etree = etree.HTML(html_str) # 获取element 类型的html
all_content = html_etree.xpath("//div[@class='item item-btn']//input[@name='type']/@value")
print(all_content)
输出:
['PL', 'ML']
二、xpath谓语的其他使用
xpath定位中starts-with、contains和text()的用法
1、starts-with
顾名思义,匹配一个属性开始位置的关键字
//input[starts-with(@name,'name1')] 查找name属性中开始位置包含'name1'关键字的页面元素
2、contains
匹配一个属性值中包含的字符串
//input[contains(@name,'na')] 查找name属性中包含na关键字的页面元素
3、text()
匹配的是显示文本信息,此处也可以用来做定位用
<a href="http://www.baidu.com">百度搜索</a>
xpath写法为 //a[text()='百度搜索']
或者 //a[contains(text(),"百度搜索")]
参考:
http://blog.csdn.net/zhouxuan623/article/details/43935039
3、注意
如果有tbody标签,要省去tbody及之前的路径,写成相对路径
xpath教程 3 - xpath的小结的更多相关文章
- xpath教程 2 - lxml库
xpath教程 2 - lxml库 这些就是XPath的语法内容,在运用到Python抓取时要先转换为xml. lxml库 lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HT ...
- xpath教程 1 - 什么是XPath
xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...
- 雷林鹏分享:Ruby XML, XSLT 和 XPath 教程
Ruby XML, XSLT 和 XPath 教程 什么是 XML ? XML 指可扩展标记语言(eXtensible Markup Language). 可扩展标记语言,标准通用标记语言的子集,一种 ...
- xpath教程三---逐层检索和全局检索
本节主要介绍用xpath来描述html的层级关系 主要使用到的知识点如下: 单独的一个点 .,表示当前位置 两个点 ..,表示上一级父标签的位置 单独的一个斜杠 /,表示只检索下面一级 单独的两个斜杠 ...
- xpath教程二 ---- 通过ID和Class检索
必备知识点 在html中,id是唯一的 在html中,class是可以多处引用的 工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests ...
- xpath教程一---简单的标签搜索
工具 Python3版本 lxml库[优点是解析快] HTML代码块[从网络中获取或者自己杜撰一个] requests[推荐安装,从网页上获取网页代码练手,再好不过了] 讲解 网页代码都是成对的标签, ...
- XPath教程
XPath 简介 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...
- jsoup、xpath教程
一.jsoup 1.使用JSOUP处理HTML文档 2.使用 jsoup 对 HTML 文档进行解析和操作 3.jsoup开发指南,jsoup中文使用手册,jsoup中文文档 二.xpath 1.XP ...
- Spider-Python爬虫之XPath 教程
原文链接:https://www.runoob.com/xpath/xpath-syntax.html XPath 术语 XPath 节点 七种类型:在 XPath 中,有七种类型的节点:元素.属性. ...
随机推荐
- Kafka配置SSL(云环境)
本文结合一个具体的实例给出如何在公有云环境上配置Kafka broker与client之间的SSL设置. 测试环境 阿里云机一台(Server端):主机名是kafka1,负责运行单节点的Kafka集群 ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)
在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...
- 32位win7+vs2008编译mysql 5.6.22源码并安装
以下这部分安装说明是来自http://www.2cto.com/database/201407/316681.html的win7+vs2010源码编译mysql,文章最后会说明用vs2008编译遇见的 ...
- iOS - AVAudioSession详解
音频输出作为硬件资源,对于iOS系统来说是唯一的,那么要如何协调和各个App之间对这个稀缺的硬件持有关系呢? iOS给出的解决方案是"AVAudioSession" ,通过它可以实 ...
- 在RDLC报表中对纸张的设置
RDLC报表是存放成XML文件格式的,这一点你可以直接打开RDLC报表文件看一下,而且在使用时,通过ReportViewer来读取报表并与数据源进行合成,也就是说RDLC是定义了一个格式,那就不能通过 ...
- c++ 纯虚析构函数
; 这就是一个纯虚析构函数,这种定义是允许的. 一般纯虚函数都不允许有实体,但是因为析构一个类的过程中会把所有的父类全析构了,所以每个类必有一个析构函数. 所以.纯虚析构函数需要提供函数的实现,而一般 ...
- jQuery事件处理(七)
1.自定义事件(用户手动trigger的一般都是自定义事件) trigger: function( event, data, elem, onlyHandlers ) { var i, cur, tm ...
- Building Boost for Android with error “cannot find -lrt”
编辑tools/build/src/tools/gcc.jam rule setup-threading ( targets * : sources * : properties * ){ local ...
- 中国标准时间、‘yyyy-MM-dd’格式时间转为时间戳
中国标准时间转为时间戳 let _time="Tue Mar 20 2018 00:00:00 GMT+0800 (中国标准时间)"; console.log(Date.parse ...
- Nginx学习之keepalive
当然,在nginx中,对于http1.0与http1.1也是支持长连接的.什么是长连接呢?我们知道,http请求是基于TCP协议之上的,那么,当客户端在发起请求前,需要先与服务端建立TCP连接,而每一 ...