数据解析_xpath
重点推荐这种解析方式,xpath是最常用且最便捷高效的一种解析方式,通用性
1、解析原理
1、实例化一个etree的对象,且需要将被解析的页面源码数据加载到改对象中。
2、调用etree对象中的xpath方法结合表达式实现标签的定位和内容的捕获
2、环境的安装
1、pip install lxml (lxml是一种解析器)
3、如何实例化一个etree对象 from lxml import etree
1、将本地的html文档中的源码数据加载到etree对象中
etree.parse(filePath)
2、可以将从互联网上获取的源码数据加载到该对象中
etree.HTML('page_text')
4、xpath('xpath表达式')
-- /:表示的是从根节点开始定位,表示的是一个层级
-- //:表示的是多个层级,可以表示从任意位置开始定位
-- 属性定位://div[@class='sort'] tag[@attrName='attrValue']
--索引定位://div[@class='sort']/p[3] 索引从1开始的
-- 取文本 /text() 获取的是标签中直系的文本内容
//text() 获取的是所有后代的文本内容
-- 取属性 /@attrName /src
一个错误:
lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 3 and head, line 3, column 87 解决办法:
自己创建html解析器,增加parser参数 from lxml import etree
parser = etree.HTMLParser(encoding="utf-8")
htmlelement = etree.parse("baidu.html", parser=parser)
print(etree.tostring(htmlelement, encoding="utf-8").decode("utf-8"))
原文链接:https://blog.csdn.net/Kwoky/java/article/details/81099697
import requests
from lxml import etree
if __name__ == '__main__':
parser = etree.HTMLParser(encoding="utf-8")
#实例化好了一个etree对象,且将被解析的源码加载到该对象中
tree = etree.parse('test2.html',parser=parser)
#r = tree.xpath('/html/head/title') #[<Element title at 0x27230787248>]
#r = tree.xpath('/html//title') #[<Element title at 0x222b0a57408>]
#r= tree.xpath('//li[@class="sort"]') #[<Element title at 0x25dd0f77048>]
#r = tree.xpath('//li[@class="sort"]/p[2]') # [<Element title at 0x25dd0f77048>]
r = tree.xpath('//li[@class="sort"]//a/text()')
print(r) #[<Element li at 0x135d9b37448>]
数据解析_xpath的更多相关文章
- C#-正则,常用几种数据解析-端午快乐
在等待几个小时就是端午节了,这里预祝各位节日快乐. 这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢. 开始吧 ...
- 通读AFN①--从创建manager到数据解析完毕
流程梳理 今天开始会写几篇关于AFN源码解读的一些Blog,首先要梳理一下AFN的整体结构(主要是讨论2.x版本的Session访问模块): 我们先看看我们最常用的一段代码: AFHTTPSessio ...
- android基础(五)网络数据解析方法
在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- iOS-数据持久化基础-JSON与XML数据解析
解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 场景模拟 假设由于漏存JD SKU对应的店铺信息.这时我们需要重新完全采集所有 ...
- JSON数据解析 基础知识及链接收集
JSON数据解析学习 JSON介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式. JSON 是存储和交换文本信息的语法.类似 XML.但是JSON 比 ...
- 浅谈JSON数据解析方法
JSON数据解析 JSON是什么?? 如何把JSON数据解析出来 如何把一个字典转换为JSON JSON详细介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交 ...
- Gprinter热敏打印机光栅位图点阵数据解析工具
最近参与的项目有一个需求,解析佳博热敏打印机的光栅位图点阵数据并保存为图片文件.数据是通过Bus Hound抓取的,如下图所示. 其中1b 40为初始化打印机的指令,对应的ASCII码为ESC @,1 ...
随机推荐
- Java实现蓝桥杯VIP算法训练 数组逆序排列
试题 算法训练 数组逆序排列 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 编写一个程序,读入一组整数(不超过20个),并把它们保存在一个整型数组中.当用户输入0时,表示输入结束. ...
- Java实现 蓝桥杯VIP 算法训练 确定元音字母位置
算法训练 确定元音字母位置 时间限制:1.0s 内存限制:512.0MB 输入一个字符串,编写程序输出该字符串中元音字母的首次出现位置,如果没有元音字母输出0.英语元音字母只有'a'.'e'.'i'. ...
- Java实现 洛谷 P2118 比例简化
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- CDN HTTPS安全加速基本概念、解决方案及优化实践
大家都知道,HTTP 本身是明文传输的,没有经过任何安全处理,网站HTTPS解决方案通过在HTTP协议之上引入证书服务,完美解决网站的安全问题.本文将为大家介绍阿里云CDN HTTPS安全加速传输的基 ...
- 数据结构&算法
20个最常用.最基础数据结构与算法: 10个数据结构:数组.链表.栈.队列.散列表.二叉树.堆.跳表.图.Trie 树. 10个 算法 :递归.排序.二分查找.搜索.哈希.贪心.分治.回溯. ...
- 08_提升方法_AdaBoost算法
今天是2020年2月24日星期一.一个又一个意外因素串连起2020这不平凡的一年,多么希望时间能够倒退.曾经觉得电视上科比的画面多么熟悉,现在全成了陌生和追忆. GitHub:https://gith ...
- SpringBoot任务
异步任务: 在方法上添加@Async注解 表明这个方法是一个异步的方法 package com.king.service; import org.springframework.scheduling. ...
- HttpClient 常用方法封装
简介 在平时写代码中,经常需要对接口进行访问,对于 http 协议 rest 风格的接口请求,大多使用 HttpClient 工具进行编写,想着方便就寻思着把一些常用的方法进行封装,便于平时快速的使用 ...
- LR字符串处理函数-lr_eval_string
char *lr_eval_string( const char *instring ); 主要返回参数的实际内容 Action() { web_save_timestamp_param(" ...
- C#构造函数 -0028
默认构造函数 声明基本构造函数的语法就是声明一个与类同名的方法,但该方法没有返回类型: public class MyClass { public MyClass() { } // rest of c ...