【python爬虫】Xpath
一、xml是什么
1、定义:可扩展标记性语言
2、特点:xml的是具有自描述结构的半结构化数据。
3、作用:xml主要设计宗旨是用来传输数据的。他还可以作为配置文件。
二、xml和html的区别
1、语法要求不同:xml的语法要求更严格。
(1)html不区分大小写的,xml区分。
(2)html有时可以省却尾标签。xml不能省略任何标签,严格按照嵌套首位结构。
(3)只有xml中有自闭标签(没有内容的标签,只有属性。)<a class='abc'/>
(4)在html中属性名可以不带属性值。xml必须带属性值。
(5)在xml中属性必须用引号括起来,html中可以不加引号。
2、作用不同
html主要设计用来显示数据以及更好的显示数据。
xml主要设计宗旨就是用传输数据
3、标记不同:xml没有固定标记,html的标记都是固定的,不能自定义。
三、xpath
1、什么是xpath?
xpath是一种筛选html或者xml页面元素的【语法】
2、xml和html的一些名词
元素、标签、属性、内容
3、xml的两种解析方法
dom和sax
4、xpath语法
(1)选取节点
nodename --- 选取此标签及其所有字标签。
/----从根节点开始选取。
// ----从任意节点开始,不考虑他们的位置。
//book---不管book位置,在xml中取出所有的book标签。
.----当前节点开始找
..----从父节点
@ ---选取属性
text()---选取内容
(2)谓语:起限定的作用,限定他前面的内容。
[]写在谁的后面,就限定谁,一般用于限定元素或者标签。
//book[@class='abc']
常见的谓语:
[@class] ----选取有class
[@class='abc'] ---选取class属性为abc的节点。
[contains(@href,'baidu')] ---选取href属性包含baidu的标签
[1] ---选取第一个
[last()]---选取最后一个
[last()-1]---选取倒数第二
[position()>2]---跳过前两个。
book[price>30]
(3)通配符
* ---匹配任意节点
@* ---匹配任意属性
(4)选取若干路径
| ---左边和右边的xpath选的内容都要---and
5、lxml模块----python处理xml和html的模块。
(1)解析字符创类型xml
from lxml import etree
text='''
html页面内容
'''
tree = etree.HTML(text)---返回值就是一个element对象
#element对象有xpath方法,可以通过xpath表达式来筛选内容。
#选取class属性为item-1的li下面的a标签的内容
a_contents = tree.xpath('//li[@class="item-1"]/a/text()') 将element对象变成字符串的方法
# html_str = etree.tostring(tree,pretty_print=True).decode('utf-8')
# print(type(html_str))
#elment对象xpath放来筛选,返回值都是一个list。
#xpath表达式最后一个是一个元素(标签),list中都是elment元素
#xpath表达式最后一个是属性,list都是属性字符串
#xpath表达式最后一个是内容,list都是内容字符串
(2)解析xml或者html文件
from lxml import etree #parse方法是按照xml的方式来解析,如果语法出问题,就会报错。
html = etree.parse('demo.html') # print(html)#_ElementTree
li_texts = html.xpath('//li/a/text()') print(li_texts)
【python爬虫】Xpath的更多相关文章
- python爬虫xpath的语法
有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ...
- python爬虫xpath
又是一个大晴天,因为马上要召开十九大,北京地铁就额外的拥挤,人贴人到爆炸,还好我常年挤地铁早已练成了轻功水上漂,挤地铁早已经不在话下. 励志成为一名高级测试工程师的我,目前还只是个菜鸟,难得有机会,公 ...
- Python爬虫 XPath语法和lxml模块
XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...
- python爬虫----XPath
1.知道本节点元素,如何定位到兄弟元素 详情见博客 XML代码见下 bt1在文档中只出现一次,所以很容易获取到bt1中内容,那怎么根据<td class='bt1'>来获取bt2中的内容 ...
- Python爬虫 | xpath的安装
错误信息:程序包无效.详细信息:“Cannot load extension with file or directory name . Filenames starting with "& ...
- python爬虫前提技术
1.BeautifulSoup 解析html如何使用 转自:http://blog.csdn.net/u013372487/article/details/51734047 #!/usr/bin/py ...
- Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)
一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...
- Python爬虫教程-22-lxml-etree和xpath配合使用
Python爬虫教程-22-lxml-etree和xpath配合使用 lxml:python 的HTML/XML的解析器 官网文档:https://lxml.de/ 使用前,需要安装安 lxml 包 ...
- 小白学 Python 爬虫(19):Xpath 基操
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
随机推荐
- IPV6技术笔记(剖析IPv4toIPv6)
IPV6技术笔记 IPv6地址入门概念 什么是IPv6? IPv6,全称Internet Protocol version 6,即网际协议版本6,也叫互联网通信协议第六版.是互联网工程任务组(IETF ...
- CSS中的变量使用,var()语法
参考博客:https://blog.csdn.net/qq_34206361/article/details/53690414
- Dapr 运用之集成 Asp.Net Core Grpc 调用篇
前置条件: <Dapr 运用> 改造 ProductService 以提供 gRPC 服务 从 NuGet 或程序包管理控制台安装 gRPC 服务必须的包 Grpc.AspNetCore ...
- Ubuntu18.04 配置Cups PDF虚拟打印机服务
更新 sudo apt update && sudo apt upgrade -y 安装cups pdf服务 sudo apt-get install cups-pdf -y 修改配置 ...
- Django项目BBS博客论坛
BBS 项目开发逻辑梳理 第一步:先进行数据库设计 数据库设计规则是: 1.先创建基表:用户表.站点表.文章表.标签表.分类表.文章2标签第三张关系表.点赞点踩表.评论表 2.书写表中的基本含有的字段 ...
- Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties
目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...
- JVM 学习笔记一 :JVM类加载机制
前言: 最近在看JVM相关资料,这里记录下学习笔记,希望自己能坚持学完,打牢基础. 一.类加载过程 1,类从被加载到JVM中开始,到卸载为止,整个生命周期包括:加载.验证.准备.解析.初始化.使用 ...
- Android utils 工具类之MD5加密 MD5Utils
实际开发过程中,密码不会保存明文形式,容易被别人窃取. MD5加密是不可逆的加密算法,只能由明文转换成密文. 但是有些人通过将明文对应的密文保存在数据库中,进行查询破解密文.为防止这种解密,根据许多对 ...
- 设置POP3/SMTP协议 手机绑定邮箱
例如设置企业邮箱 一.设置POP3/SMTP协议,意思是代收邮件致本地POP3接收邮件服务器:pop.qiye.qq.comSMTP发送邮件服务器:smtp.qiye.qq.com二.设置IMAP/S ...
- BOM的补充
1.首先我们要知道BOM是干什么的? BOM和DOM.ES是JavaScript的重要三个组成部分: Bom的核心操作是window:简单来说就是用来操作浏览器的,他是js访问浏览器的接口,它里面封装 ...