爬虫 - xpath 匹配
例题
import lxml.html test_data = """
<div>
<ul>
<li class="item-0"><a href="link1.html" id="places_neighbours__row">9,596,960first 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" id="places_neighbours__row">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
<li class="good-0"><a href="link5.html">fifth item</a></li>
</ul>
<book>
<title lang="aaengbb">111111</title>
<price id="places_neighbours__row">29.99</price>
</book>
<book>
<title lang="zh">222222</title>
<price>39.95</price>
</book>
<book>
<title>33333</title>
<price>40</price>
</book>
</div>
<a>
<book>
<title>123</title>
</book> </a> """ """
/ 从根标签开始 必须具有严格的父子关系
// 从当前标签 后续节点含有即可选出
* 通配符,选择所有
//div/book[1]/title 选择div下第一个book标签的title元素
//div/book/title[@lang="zh"]选择title属性含有lang且内容是zh的title元素
//div/book/title //book/title //title //div//title 具有相同的结果,因为使用相对路径最终都指向title
//book/title/@* 将title所有的属性值选择出来
//book/title/text() 将title的内容选择出来,使用内置text()函数
//a[@href="link1.html" and @id="places_neighbours__row"]
//a[@href="link1.html" or @id="places_neighbours__row"]
//div/book[last()]/title/text() 将最后一个book元素选出
//div/book[price > 39]/title 将book子标签price数值大于39的选择出来
//li[starts-with(@class,'item')] 将class属性前缀是item的li标签选出
//title[contains(@lang,'eng')] 将title属性lang含有eng关键字的标签选出
""" html = lxml.html.fromstring(test_data) #html_data = html.xpath('//div/book/title/text()')
#html_data = html.xpath('//div/book[1]/title/text()')
#html_data = html.xpath('//div/book/title[@lang="zh"]/text()')
#html_data = html.xpath('//div/book/title/text()')
# html_data = html.xpath('//book/title/text()')
# html_data = html.xpath('//title/text()')
# html_data = html.xpath('//div//title/text()')
# html_data = html.xpath('//book/title/@*') # html_data = html.xpath('//a[@href="link1.html" and @id="places_neighbours__row"]/text()')
#html_data = html.xpath('//a[@href="link2.html"]/text()')
# html_data = html.xpath('//div/ul/li/a[@id]/text()')
# html_data = html.xpath('//a[@href="link1.html" and @id="places_neighbours__row"]/@*')
# html_data = html.xpath('//a[@href="link1.html" and @id="places_neighbours__row"]/@href')
# html_data = html.xpath('//a[@href="link1.html" or @id="places_neighbours__row"]/text()')
# html_data = html.xpath('//div/book[last()]/title/text()')
#html_data = html.xpath('//div/book[price > 39]/title/text()')
# html_data = html.xpath('//li[starts-with(@class,"item")]/a/text()')
html_data = html.xpath('//title[contains(@lang,"eng")]/text()') for i in html_data:
print(i)
爬虫 - xpath 匹配的更多相关文章
- 笔记-爬虫-XPATH
		笔记-爬虫-XPATH 1. xpath XPath是W3C的一个标准.它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计.目前有XPath1.0和XPath2.0两 ... 
- 爬虫——xpath
		1.什么是xpath? Xpath,全称XML Path Language,即XML路径语言.它是一门在XML之后查找信息的语言,也同样适用于HTML文档的搜索.在做爬虫的时候,我们用XPath语言来 ... 
- python爬虫xpath的语法
		有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ... 
- python爬虫xpath
		又是一个大晴天,因为马上要召开十九大,北京地铁就额外的拥挤,人贴人到爆炸,还好我常年挤地铁早已练成了轻功水上漂,挤地铁早已经不在话下. 励志成为一名高级测试工程师的我,目前还只是个菜鸟,难得有机会,公 ... 
- python中用xpath匹配文本段落内容的技巧
		content = item.xpath('//div[@class="content"]/span')[0].xpath('string(.)') content = item. ... 
- Python网络爬虫-xpath模块
		一.正解解析 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [0-9] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\ ... 
- XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法
		XPath当匹配标签判断text()判断内容失败的问题及解决 问题复现 在爬取网站的时候我使用XPath去抓取网页上的内容,XPath表达式来精准获取需要的标签内容. 当我对如下一段html代码编写X ... 
- Python爬虫 XPath语法和lxml模块
		XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ... 
- [Python 练习爬虫] XPATH基础语法
		XPATH语法: // 定位根标签 / 往下层寻找 /text() 提取文本内容 /@xxx 提取属性内容 Sample: import requests from lxml import etree ... 
随机推荐
- C# 后台解析json,简单方法 字符串序列化为对象,取值
			如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ... 
- Mysql rpm安装
			总结下mysql rpm安装的方式,与一些错误 环境[root@host2 ~]# uname -aLinux host2 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed D ... 
- DAO层,Service层,Controller层、View层介绍
			来自:http://jonsion.javaeye.com/blog/592335 DAO层 DAO 层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DA ... 
- SQL Server Mobile/Compact Edition 简单介绍
			除了SQL Server Express,SQL Server还有个更轻量级的版本:SQL Server Compact Edition,容易让人想起Windows Compact Edition ( ... 
- Exchange Server  产品路线图 及 补丁下载
			Exchange Server RU listExchange Server and Update Rollup Build Numbers -TechNet Articles -United Sta ... 
- C# 表达式树 创建、生成、使用、lambda转成表达式树~表达式树的知识详解
			笔者最近学了表达式树这一部分内容,为了加深理解,写文章巩固知识,如有错误,请评论指出~ 表达式树的概念 表达式树的创建有 Lambda法 和 组装法. 学习表达式树需要 委托.Lambda.Func& ... 
- scala简介
			1.什么是Scala scala官方网址: http://www.scala-lang.org Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性.Scala运行 ... 
- 高可用web框架
			nginx nginx简介 Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apa ... 
- kvm 虚拟机
			关于text模式安装的一个问题 http://serverfault.com/questions/257962/kvm-guest-installed-from-console-but-how-to- ... 
- Alpha Scrum5
			Alpha Scrum5 牛肉面不要牛肉不要面 Alpha项目冲刺(团队作业5) 各个成员在 Alpha 阶段认领的任务 林志松:督促和监督团队进度,前端页面编写 林书浩.陈远军:界面设计.美化 吴沂 ... 
