xpath解析数据
xpath解析数据
"""
xpath 也是一种用于解析xml文档数据的方式
xml path
w3c xpath搜索用法 在 XPath 中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档节点(或称为根节点)。都要用/
""" doc = """
<?xml version="1.0" encoding="ISO-8859-1"?>
<html>
<body>
<bookstore id="test" class="ttt"> <book id= "1" class = "2">
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book> <book id = "2222222222222">11111111111111111111
<title lang="abc">Learning XML</title>
<price>39.95</price>
</book> </bookstore>
<a></a>
</body>
</html>
""" from lxml import etree
html = etree.HTML(doc)
print(html.xpath("/bookstore")) # 从根标签找所有匹配的 列表形式
print(html.xpath("//bookstore")) # 全文中找所有匹配的 列表形式 # 通配符 *
print(html.xpath("//book")) #全文中找所有book标签
print(html.xpath("//*")) # 全文中找所有标签 # 获取属性
print(html.xpath("//bookstore/@id")) #获取id属性
print(html.xpath("//bookstore/@*")) #获取所有属性 # 嵌套
print(html.xpath("//bookstore/book/title/text()")) ==============================================================================
# 加上谓语(条件) # 指定要获取的索引
# print(html.xpath("//bookstore/book[1]/title/text()")) # 获取第一个
# print(html.xpath("//bookstore/book[last()-1]/title/text()")) # last() 最后一个 last()-1 倒数第二个
# print(html.xpath("//bookstore/book[position()>1]/title/text()")) # 索引大于1的 # xpath 原生 既能查找属性 又能查找标签 而在selenium只能查找标签
# 查找price的值大于30的book标签
# e = html.xpath("//book[price > 30]")[0]
# print(e.text) # 访问文本 不包含子标签的文本 只包含自己标签的文本
# print(e.attrib) # 访问属性 # 用属性来作限制
# 只要存在lang属性即可
print(html.xpath("//*[@lang]")) # 找的是具备lang并且值为abc的标签
print(html.xpath("//*[@lang='abc']"))
#获取其属性
print(html.xpath("//*[@lang='abc']")[0].attrib) # 只要 有属性即可
print(html.xpath("//*[@*]")) # 多个匹配条件
print(html.xpath("//title|//price")) ==================================================================================
# 轴匹配 (先拿到一个标签 在相对这个标签找其他标签) print(html.xpath("//bookstore/ancestor::*")) # 所有先辈
print(html.xpath("//bookstore/ancestor::body")) # 所有叫body的先辈
print(html.xpath("//bookstore/ancestor-or-self::*")) # 所有先辈包含他自己 # 获取属性
print(html.xpath("//bookstore/attribute::id"))
print(html.xpath("//bookstore/@id")) # 所有子级标签(只有子级)
print(html.xpath("//bookstore/child::*")) # 所有后代标签
print(html.xpath("//bookstore/descendant::*")) # 在这个标签后面的所有标签 与层级无关
print(html.xpath("//book[1]/following::*")) #第一个book后的所有标签 # 获取弟弟们(他后面的同级标签)
print(html.xpath("//book[1]/following-sibling::*")) # 获取哥哥们(它前面的同级标签)
print(html.xpath("//book[1]/preceding-sibling::*")) # 获取父级
print(html.xpath("//book[1]/parent::*")) # 获取既有id属性 又有class属性的标签
print(html.xpath("//*[@id and @class]"))
xpath解析数据的更多相关文章
- 爬虫系列二(数据清洗--->xpath解析数据)
一 xpath介绍 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 XML 文档中通过元素和属性进行导航. XPath 使用路径表达式在 XML 文档中进行导航 XPath 包 ...
- iOS 抓取 HTML ,CSS XPath 解析数据
以前我们获取数据的方式都是使用 AFN 来 Get JSON 数据,比如 点我查看 JSON 数据.http://news-at.zhihu.com/api/4/news/latest 但例如下面的百 ...
- 万方数据知识平台 TFHpple +Xpath解析
试了一下.基本上适合全部的检索结果. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loadi ...
- 解析数据(正则,xpath)
正则表达式拆分 import re # 1.拆分字符串 one = 'asdsfsgsh' # 标准 是 s 为拆分 pattern = re.compile('s') result = patter ...
- 数据的查找和提取[2]——xpath解析库的使用
xpath解析库的使用 在上一节,我们介绍了正则表达式的使用,但是当我们提取数据的限制条件增多的时候,正则表达式会变的十分的复杂,出一丁点错就提取不出来东西了.但python已经为我们提供了许多用于解 ...
- python爬虫使用xpath解析页面和提取数据
XPath解析页面和提取数据 一.简介 关注公众号"轻松学编程"了解更多. XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.X ...
- 利用XPath解析带有xmlns的XML文件
在.net中,编写读取xml 的程序中提示"未将对象引用设置到对象的实例",当时一看觉得有点奇怪.为什么在读取xml数据的时候也要实例化一个对象.google了才知道,xml文件中 ...
- xpath 解析 及案例
xpath解析 编码流程: 1.实例化一个etree对象,且将页面源码加载到该对象中 2.使用xpath函数,且在函数中必须作用一个xpath表达式进行标签的定位 3.使用xpath进行属性和文本的提 ...
- Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段
上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...
随机推荐
- Python 学习笔记3 变量-数字
我们来具体了解下有关 number类型的变量的使用方式和含义. 在Python中的Number类型的变量包含以下几种: int: 通常我们所说的整数, 比如 1, 2 ,3 ,100, 3000 等等 ...
- js 获取某个某个区间内的随机整数
//获取某个某个区间内的随机整数 ,获取到的值域为[min,max)function get_random_num(min,max){ if(/^-?\d+$/.test(min) && ...
- MarkDown语言
参考: 参考:https://typora.io/ 参考:https://caret.io/ Markdown是一种轻量级标记语言,创始人为約翰·格魯伯(英语:John Gruber). 它允许人们“ ...
- poj1416
#include<iostream> using namespace std; int target,datanum; ],temproad[]; int N,flag,maxsum; ] ...
- Python request SSL证书问题
错误信息如下: 1 requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'tls_process_s ...
- ant 执行jmeter脚本
环境准备 1.jdk版本:java version "1.8.0_201" 2.jmeter版本:5.0 3.ant版本:Apache Ant(TM) version 1.10.5 ...
- PySe-007-解决“Chrome正在受到自动软件的控制”
python使用selenium启动chrome的代码如下所示: #!/usr/local/bin/python # -*- coding: utf-8 -*- from selenium impor ...
- dataTable 分页用法总结
$(function(){ var eData=[ { "area":"濮阳县", "name":"面粉厂", &quo ...
- bootstrap 自适应和响应式布局的区别
自适应: 不管屏幕多大,都尽量不换行,而只是横向缩放. 响应式: 屏幕变小了之后,属于同一行的元素受到挤压后,行的右边元素自动换行显式: 屏幕大了后,本属于同一行的元素尽可能的排在同一行内: boo ...
- JavaScript 判断是PC端还是移动端
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android" ...