爬虫 - 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 ...
随机推荐
- CSS知多少
1.Cascading Style Sheets 层叠样式表 2.层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程. 3. 样式的5大来源:浏览器默认样式.浏览器用户自定义样式.行内样式.内部 ...
- C# 求百分比并保留2位小数
, b = ; decimal c = (decimal)a / b; , ); , )).ToString() + "%"; Console.WriteLine( - resul ...
- (C# SQL Server) 数据库连接字符串
Debug 一个SQL Server 2008 数据库连接的问题,老是提示: [67944] System.Data.SqlClient.SqlException (0x80131904): 在与 S ...
- js重名的处理
### 关于重名的处理 > 在变量提升阶段,如果名字重复了,不会重新的进行声明,但是会重新的进行定义(后面赋的值会把前面赋的值给替换掉) ```javascript //=>变量提升:fn ...
- 2.MySQL 数据类型
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...
- 轻松应对IDC机房带宽突然暴涨问题
轻松应对IDC机房带宽突然暴涨问题! 1[提出问题] [实际案例一] 凌晨3:00点某公司(网站业务)的一个IDC机房带宽流量突然从平时高峰期150M猛增至1000M,如下图: 该故障的影响:直接导致 ...
- SQL Server ->> MSDB.DBO.AGENT_DATETIME函数从整型转时间日期格式
SELECT MSDB.DBO.AGENT_DATETIME(20170101,0), CAST(CAST(20170101 AS NVARCHAR(50)) AS DATETIME) 返回 2017 ...
- Google论文(1) GFS:Google文件系统 - 思维导图
Google文件系统是一个面向大规模分布式数据密集型应用的可扩展分布式文件系统. 这里的思维导图作为个人的读书笔记. 参考资料: <google系列论文>- GFS
- python windows 远程执行bat
本机环境:Win 10,python3.6 远程机器: Win7.WinServer 因python在windows上执行需要用到 wmi 模块. wmi 模块下载地址:https://sourcef ...
- python选课系统
程序名称: 选课系统 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...