解析库--XPath
from lxml import etree
2 text = '''
3 <div>
4 <ul>
5 <li class = "item-0"><a herf = "link1.html">first item</a></li>
6 <li class = "item-1"><a herf = "link2.html">second item</a></li>
7 <li class = "item-inactive"><a herf = "link3.html">third item</a></li>
8 <li class = "item-1"><a herf = "link4.html">fourth item</a></li>
9 <li class = "item-0"><a herf = "link5.html">fifth item</a></li>
10 </ul>
11 </div>
12 '''
13 html = etree.HTML(text)
14 result = etree.tostring((html))#输出修正后的HTML文本
15 code_all = html.xpath("//*")#选取HTML全部的节点
16 code_li = html.xpath("//li")
17 code_a = html.xpath("//li/a")#选取HTML的li节点的子节点a
18 code_p = html.xpath("//a[@herf = 'link4.html']/../@class")#一直子节点寻找父节点的class属性
19 print(code_p)
20 print(code_li)
21 print("///")
22 print(code_all)
23 print("///")
24 print(code_a)
25 #属性匹配
26 attribute = html.xpath("//li[@class = 'item-0']")
27 print(attribute)
28 #文本获取
29 text = html.xpath("//li/text()")
30 print(text)
31 #属性获取
32 attribute_get = html.xpath("//li/a/@herf")
33 print(attribute_get)
34 #属性多值匹配
35 text1 = """
36 <li class = "li li-fist"><a href = "link.html">first item</a></li>
37 """
38 html1 = etree.HTML(text1)
39 attribute_number = html1.xpath("//li[contains(@class,'li')]/a/text()")
40 print(attribute_number)
41 #多属性匹配
42 text2 = """
43 <li calss = "li li-first" name = "name"><a href = "link.html">first item</a></li>
44 """
45 html2 = etree.HTML(text2)
46 attribute_text2 = html2.xpath("//li[contains(@calss,'li') and @name = 'name']/a/text()")
47 print(attribute_text2)
48 #按序选择
49 """
50 有时候,我们在选择的时候某些属性可能同时匹配了多个节点,但是只想要其中某个节点
51 这是可以利用中括号传入索引的方法获取特定次序的节点
52 """
53 text3 = '''
54 <div>
55 <ul>
<li class = "item-0"><a herf = "link1.html">first item</a></li>
57 <li class = "item-1"><a herf = "link2.html">second item</a></li>
58 <li class = "item-inactive"><a herf = "link3.html">third item</a></li>
59 <li class = "item-1"><a herf = "link4.html">fourth item</a></li>
60 <li class = "item-0"><a herf = "link5.html">fifth item</a></li>
61 </ul>
62 </div>
63 '''
64 html3 = etree.HTML(text3)
65 result = html3.xpath("//li[1]/a/text()")#选取第一个li节点
66 print(result)
67 result = html3.xpath("//li[last()]/a/text()")#选取左后一个li节点
68 print(result)
69 result = html3.xpath("//li[position() < 3]/a/text()")#选取位置小于三的节点
70 print(result)
71 #节点轴选取
72 result = html3.xpath("//li[1]/ancestor::*")#获取所有祖先节点,后跟*表示匹配所有节点
73 print(result)
74 result = html3.xpath("//li[1]/ancestor::div")#获取div这个祖先节点
75 print(result)
76 result = html3.xpath("//li[1]/attribute::*")#获取所有属性
77 print(result)
#运行结果
['item-1']
[<Element li at 0x7f72f489c888>, <Element li at 0x7f72f489c948>, <Element li at 0x7f72f489c9c8>, <Element li at 0x7f72f489ca08>, <Element li at 0x7f72f489ca88>]
///
[<Element html at 0x7f72f489c808>, <Element body at 0x7f72f489c788>, <Element div at 0x7f72f489c748>, <Element ul at 0x7f72f489c848>, <Element li at 0x7f72f489c888>, <Element a at 0x7f72f489c908>, <Element li at 0x7f72f489c948>, <Element a at 0x7f72f489c988>, <Element li at 0x7f72f489c9c8>, <Element a at 0x7f72f489c8c8>, <Element li at 0x7f72f489ca08>, <Element a at 0x7f72f489ca48>, <Element li at 0x7f72f489ca88>, <Element a at 0x7f72f489cac8>]
///
[<Element a at 0x7f72f489c908>, <Element a at 0x7f72f489c988>, <Element a at 0x7f72f489c8c8>, <Element a at 0x7f72f489ca48>, <Element a at 0x7f72f489cac8>]
[<Element li at 0x7f72f489c888>, <Element li at 0x7f72f489ca88>]
[]
['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
['first item']
['first item']
['first item']
['fifth item']
['first item', 'second item']
[<Element html at 0x7f72f489cdc8>, <Element body at 0x7f72f489cec8>, <Element div at 0x7f72f489cf48>, <Element ul at 0x7f72f489cf08>]
[<Element div at 0x7f72f489cf48>]
['item-0']
解析库--XPath的更多相关文章
- 网页解析库-Xpath语法
网页解析库 简介 除了正则表达式外,还有其他方便快捷的页面解析工具 如:lxml (xpath语法) bs4 pyquery等 Xpath 全称XML Path Language, 即XML路径语言, ...
- Python3编写网络爬虫05-基本解析库XPath的使用
一.XPath 全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索 XPath 的选择功能十分强大,它提供了 ...
- python爬虫基础04-网页解析库xpath
更简单高效的HTML数据提取-Xpath 本文地址:https://www.jianshu.com/p/90e4b83575e2 XPath 是一门在 XML 文档中查找信息的语言.XPath 用于在 ...
- 爬虫之解析库Xpath
简介 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力.起初XPat ...
- 爬虫解析库xpath
# xpath简介 XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言.用于在 XML 文档中通过元素和属性进行导航. XPath基于XM ...
- BeautifulSoup与Xpath解析库总结
一.BeautifulSoup解析库 1.快速开始 html_doc = """ <html><head><title>The Dor ...
- (最全)Xpath、Beautiful Soup、Pyquery三种解析库解析html 功能概括
一.Xpath 解析 xpath:是一种在XMl.html文档中查找信息的语言,利用了lxml库对HTML解析获取数据. Xpath常用规则: nodename :选取此节点的所有子节点 // : ...
- 网络爬虫之Selenium模块和Xpath表达式+Lxml解析库的使用
实际生产环境下,我们一般使用lxml的xpath来解析出我们想要的数据,本篇博客将重点整理Selenium和Xpath表达式,关于CSS选择器,将另外再整理一篇! 一.介绍: selenium最初是一 ...
- xpath beautiful pyquery三种解析库
这两天看了一下python常用的三种解析库,写篇随笔,整理一下思路.太菜了,若有错误的地方,欢迎大家随时指正.......(conme on.......) 爬取网页数据一般会经过 获取信息-> ...
随机推荐
- codeforces 875B
B. Sorting the Coins time limit per test 1 second memory limit per test 512 megabytes input standard ...
- 51nod1089 最长回文子串 manacher算法
0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一个字符串正着读和反着读是一样的,那它就是回文串.下面是一些回文串的实例: 12321 a aba abba aaaa ...
- 编程方式建视频——GitHub 热点速览 v.21.07
作者:HelloGitHub-小鱼干 假期过半,大家过得如何,吃好喝好了吗?GitHub 很好!本周的 GitHub Trending 又上爆款项目--github1s 装完之后,一秒 GitHub ...
- 【Python核心编程笔记】一、Python中一切皆对象
Python中一切皆对象 本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object.type和class之间的关系,以此来引出在python如何做 ...
- linux DRM 之 GEM 笔记
原文链接:https://www.cnblogs.com/yaongtime/p/14418357.html 在GPU上的各类操作中涉及到多种.多个buffer的使用. 通常我们GPU是通过图像API ...
- 大数据开发-linux下常见问题详解
1.user ss is currently user by process 3234 问题原因:root --> ss --> root 栈递归一样 解决方式:exit 退出当前到ss再 ...
- spring boot用ModelAndView向Thymeleaf模板传参数
最近在调试一个Spring Boot向Thymeleaf模板传参数的例子,但踩了很多坑,这里就把详细过程记录下来,以供大家参考. 先说下,这里遇到哪些坑呢? 1 我用的是IDEA社区版,这不支持JSP ...
- 深入解析 HTTP 缓存控制
缓存(Cache)是计算机领域里的一个重要概念,是优化系统性能的利器. 由于链路漫长,网络时延不可控,浏览器使用 HTTP 获取资源的成本较高.所以,非常有必要把"来之不易"的数据 ...
- 记录一次gitlab版本回退以及代码冲突解决流程
版本回退 git clone -b 分支名 项目地址 克隆需要回退的分支代码 git pull 保证代码提交记录最新 git log --pretty=oneline 以行的形式展示提交记 ...
- Spring Security 实战干货:OAuth2登录获取Token的核心逻辑
1. 前言 在上一篇Spring Security 实战干货:OAuth2授权回调的核心认证流程中,我们讲了当第三方同意授权后会调用redirectUri发送回执给我们的服务器.我们的服务器拿到一个中 ...