Xpath解析

XPath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但XPath明显比re具有优势,在网页分析上使re退居二线。

Xpath使用

  1. 1.下载:pip install lxml
  2. 2.导包:from lxml import etree
  3.  
  4. 3.html文档或者xml文档转换成一个etree对象,然后调用对象中的方法查找指定的节点
  5.  
  6.   3.1 本地文件:tree = etree.parse(文件名)
  7. tree.xpath("xpath表达式")
  8.  
  9.   3.2 网络数据:tree = etree.HTML(网页内容字符串)
  10. tree.xpath("xpath表达式")

Xpath表达式

测试页面数据

  1. <html lang="en">
  2. <head>
  3. <meta charset="UTF-8" />
  4. <title>测试bs4</title>
  5. </head>
  6. <body>
  7. <div>
  8. <p>百里守约</p>
  9. </div>
  10. <div class="song">
  11. <p>李清照</p>
  12. <p>王安石</p>
  13. <p>苏轼</p>
  14. <p>柳宗元</p>
  15. <a href="http://www.song.com/" title="赵匡胤" target="_self">
  16. <span>this is span</span>
  17. 宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
  18. <a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
  19. <img src="http://www.baidu.com/meinv.jpg" alt="" />
  20. </div>
  21. <div class="tang">
  22. <ul>
  23. <li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a></li>
  24. <li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a></li>
  25. <li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
  26. <li><a href="http://www.sina.com" class="du">杜甫</a></li>
  27. <li><a href="http://www.dudu.com" class="du">杜牧</a></li>
  28. <li><b>杜小月</b></li>
  29. <li><i>度蜜月</i></li>
  30. <li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
  31. </ul>
  32. </div>
  33. </body>
  34. </html>

常用Xpath表达式

  1. '''
  2. 属性定位:
  3. #找到class属性值为song的div标签
  4. //div[@class="song"] # // 表示整个文档下
  5. 层级&索引定位:
  6. #找到class属性值为tang的div的直系子标签ul下的第二个子标签li下的直系子标签a
  7. //div[@class="tang"]/ul/li[2]/a
  8. 逻辑运算:
  9. #找到href属性值为空且class属性值为du的a标签
  10. //a[@href="" and @class="du"]
  11. 模糊匹配:
  12. //div[contains(@class, "ng")]
  13. //div[starts-with(@class, "ta")]
  14. 取文本:
  15. # /表示获取某个标签下的文本内容
  16. # //表示获取某个标签下的文本内容和所有子标签下的文本内容
  17. //div[@class="song"]/p[1]/text()
  18. //div[@class="tang"]//text()
  19. 取属性:
  20. //div[@class="tang"]//li[2]/a/@href
  21. '''

03 数据解析-Xpath的更多相关文章

  1. 爬虫-数据解析-xpath

    xpath 解析 模块安装 : pip install lxml xpath的解析原理 实例化一个etree类型的对象,且将页面源码数据加载到该对象中 需要调用该对象的xpath方法结合着不同形式的x ...

  2. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  3. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(2)

    上半部分内容链接 : https://www.cnblogs.com/lowmanisbusy/p/9069330.html 四.json和jsonpath的使用 JSON(JavaScript Ob ...

  4. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  5. python爬虫数据解析的四种不同选择器Xpath,Beautiful Soup,pyquery,re

    这里主要是做一个关于数据爬取以后的数据解析功能的整合,方便查阅,以防混淆 主要讲到的技术有Xpath,BeautifulSoup,PyQuery,re(正则) 首先举出两个作示例的代码,方便后面举例 ...

  6. Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

  7. 数据解析(XML和JSON数据结构)

    一   解析 二 XML数据结构 三 JSON 数据结构     一 解析 1  定义: 从事先规定好的格式中提取数据     解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...

  8. 【原】iOS学习38网络之数据解析

    1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. X ...

  9. iOS GET、POST数据解析

    在实际开发中,JSON数据解析更简单易行,一般均使用json数据解析,因此,程序猿们请务必和后台搞好关系,让他给你json数据.    XML解析: ios SDK提供了NSXMLParser和lib ...

随机推荐

  1. POJ3417(树上差分)

    会卡vector. ; int n, m, Ans; ], to[maxn * ], tot; int vis[maxn], f[maxn]; int d[maxn], sum[maxn]; vect ...

  2. SP1805 Largest Rectangle in a Histogram

    题目链接: 洛谷SP1805 题意: 如图所示,在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积(图中的阴影部分的面积即所求答案) 输入格式: 有多组测试数据,每组数据占一行.输入零 ...

  3. PHP获取今天开始和结束的时间戳、每周开始结束的时间戳、每月开始结束的时间戳

    PHP获取今天内的时间 今天开始和结束的时间戳 $t = time(); $start = mktime(0,0,0,date("m",$t),date("d" ...

  4. PopupWindow(2)简单示例-自定义弹出菜单

    本示例,用 popupWindow 自定义弹出菜单 public class CustomActionProvider extends ActionProvider implements OnMenu ...

  5. python programming

    1. super 2. *args, **kwargs 3. class object 4. type 5. isinstance 6. list[:] = another_list

  6. 关于itchat用法的一篇博文

    itchat的原理就是利用爬虫爬取了网页版微信的内容,并进行一系列的操作,运用微信,通过手机与电脑时登录的互通性,可以实现用微信对电脑的操作,通过itchat.msg_register方法,可以得到目 ...

  7. 04.NopCommerce启用MiniProfiler调试

    最近在调试NopCommerce的时候,常遇到一个地址不知道请求哪个路由(比如http://localhost/apparel-shoes,比如http://localhost/login)您能快速说 ...

  8. spring mvc 通过拦截器记录请求数据和响应数据

    spring mvc 能过拦截器记录请求数据记录有很多种方式,主要有以下三种: 1:过滤器 2:HandlerInterceptor拦截器 3:Aspect接口控制器 但是就我个人所知要记录返回的数据 ...

  9. AJPFX浅谈Java性能优化之finalize 函数

    ★finalize 函数的调用机制 俺经常啰嗦:“了解本质机制的重要性”.所以今天也得先谈谈 finalize 函数的调用机制.在聊之前,先声明一下:Java虚拟机规范,并没有硬性规定垃圾回收该不该搞 ...

  10. 基于udp协议的套接字及udp协议粘包问题

    udp协议的套接字 udp协议传输  服务端和客户端没有建立连接一说. import socket # 总结一下基础工作流程:服务端生成套接字并绑定ip_port,进入数据传输循环,服务端接受客户端发 ...