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 中,有七种类型的节点:元素.属性. ...
随机推荐
- php git pull
http://jondavidjohn.com/git-pull-from-a-php-script-not-so-simple/
- 通过设置P3P头来实现跨域访问COOKIE
通过设置P3P头来实现跨域访问COOKIE 实际工作中,类似这样的要求很多,比如说,我们有两个域名,我们想实现在一个域名登录后,能自动完成另一个域名的登录,也就是PASSPORT的功能. 我只写一个大 ...
- ViewBag对象的更改
JSSDKObj = new JSSDKModel(); JSSDKObj.title = "初始名称"; ViewBag.JSSDK = JSSDKObj;//初始设置ViewB ...
- thinkphp3.2 实现留言功能
写一个例子说明一下: 前端:http://www.mmkb.com/zhendao/index/feedback.html <form method="post" actio ...
- 【大数据系列】hadoop2.0中的jobtracker和tasktracker哪里去了
低版本的hadoop下MapReduce处理流程 1.首先用户程序(JobClient)提交了一个job,job的信息会发送到Job Tracker,Job Tracker是Map-reduce框架的 ...
- 原生js(二)
js的同步.异步和延迟 1.默认情况下,js是同步和阻塞DOM解析的.在解析DOM的过程中,当遇到script时,会暂停DOM解析,开始请求script并执行js,执行完成之后再接着解析DOM树. 2 ...
- Eclipse 创建和读取yaml文件
工具和用法: 1. eclipse插件包:org.dadacoalition.yedit_1.0.20.201509041456-RELEASE.jar 用法:将此jar包复制到eclipse-jee ...
- mysql的root的权限被控制无法授权
一.环境: MariaDB [(none)]> select version(); +----------------+ | version() | +---------------- ...
- GlusterFS六大卷模式說明
GlusterFS六大卷說明 第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提供其他硬件/软件层.(簡介:分布式卷,文件通过hash算法随机的分 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十三:串口模块② — 接收
实验十三:串口模块② - 接收 我们在实验十二实现了串口发送,然而这章实验则要实现串口接收 ... 在此,笔者也会使用其它思路实现串口接收. 图13.1 模块之间的数据传输. 假设我们不考虑波特率,而 ...