首页 > 其他分享 >爬虫之 xPath 用法总结整理

爬虫之 xPath 用法总结整理

时间:2022-12-28 17:36:12浏览次数:39  
标签:xPath xpath HTML 爬虫 用法 html result li data


在网络爬虫中,对于HTML的解析,XPath是一种常用的方法。XPath 最初是用于XML中,其主要使用路径表达式在 XML 文档中进行导航。用于HTML中主要是因为HTML和XML非常的相似:它们具有类似的文件结构。都有唯一的根元素。都采用标签的方式。

同时又有点不同,XML可以自定义标签而HTML的标签是确定的XML用于描述数据(和JSON一样)而HTML用于显示数据(经过浏览器处理)。

XPath的解析需要依赖于"lxml"库。为了方便我们可以在谷歌浏览器安装XPath插件:xpath.crx 。使用xpath必须对HTML具有一定的了解。

用于网络爬虫的XPath主要使用以下语法:

爬虫之 xPath 用法总结整理_XML

练习代码如下:

#!/usr/bin/env python
# _*_ coding:utf-8 _*_


from lxml import etree


if __name__ == '__main__':


text = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html">third item</a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a>
</ul>
</div>
'''


# 1.转换成 lxml文档
html_data = etree.HTML(text)
# 2. 格式化 了解
html_result = etree.tostring(html_data)
# print html_result
# 3.掌握的 xpath
# 3.1取出所有的li标签
#result = html_data.xpath('//li')
# 3.2获取所有a
#result = html_data.xpath('//li/a')
# 3.3 取出内容
#result = html_data.xpath('//li/a/text()')
# 3.4 取出 属性的值
result = html_data.xpath('//li[@class="item-inactive"]/a/@href')
# 3.5 模糊查询 contains
#result = html_data.xpath('//li[contains(@class,"1")]')
print(result)


# . 选取当前节点。
# .. 选取当前节点的父节点。
# @ 选取属性。
# * 任意匹配 //div/* div元素下的任意元素
# // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
# //div 选取所有的div
# //div[@class = "my"] 选取class = "my"的div结点
# //title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
# //title[@lang=’eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。

获取演示代码,请在公众号回复 ‘xPath’ 。

标签:xPath,xpath,HTML,爬虫,用法,html,result,li,data
From: https://blog.51cto.com/u_15924937/5975831

相关文章

  • Python中使用xpath一键获取各国国旗
    国旗是一个国家的主权意识不断增强后必然的产物,国旗是国家的一种标志性旗帜,是国家的象征。代表着一个国家的主权和民族的尊严。每个国家的国旗都由特有的颜色和图案构成,这些......
  • SAP实战中Submit的常见用法(方法二挺好用的,标准,自定义报表都可以用)
    场景:系统MB52/MB51/MB5B等类似的报表,虽然数据很全面,执行效率也够快,但是经常会不满足用户需求(增添字段、添加查询条件等),很多ABAP会选择去COPY出标准程序,然后去做修改,强烈不......
  • Python爬虫(一)热身
    基础操作一importurllibimportchardet#字符集检测url="http://www.163.com/"html=urllib.urlopen(url)printhtml.headers#头部信息printhtml.getcode()#状态......
  • 爬虫逆向 - 分析思路
    背景:网站分析思路 笔记1:案例:1.乌海市公共资源:http://www.whggzy.com/home.html数据加密案例2.福建省公共资源交易电子公共服务平台:https://ggzyfw.fu......
  • MySQL的group_concat()函数简单用法
    将groupby产生的同一个分组中的值连接起来,返回一个字符串结果。group_concat函数首先根据groupby指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字......
  • python的list的用法
    #ReadMe#本工具是根据用户选择的条目来打印该列表下的内容#例如选择“北京”就会打印北京下面的“海淀”“昌平”“朝阳”,选择“海淀”然后会打印海淀下面的“清华大学”和......
  • lombok之@Accessors用法
    lombok之@Accessors用法lombok的@Accessors注解,打在pojo类上,实现setter方法的链式调用,特别是在初始化对象实例时,可以实现@Builder注解的部分功能,非常方便。注意:有些框架,......
  • 通讯录系统(控制台+dom4j+xPath+xml)
    设计一个通讯录程序    联系人: 编号  姓名  性别  年龄  电话  QQ 邮箱    功能要求:        添加联系人    ......
  • 爬虫逆向 - 头部信息逆向
    背景:本文只是为了学习逆向技术,与爬取数据无关,所以文中没有数据爬取,只是叙述了JS逆向思路及步骤 请勿对目标网站进行大规模爬取网址:https://ggzyfw.fujian.gov.cn/b......
  • Java千问11:instanceof运算符用法详解
    ​Java语言当中提供了一个叫做instanceof的运算符。很多教科书上对这个运算符的介绍并不详细,只是简单的说这个运算符是用来判断某个对象是不是属于某种类型。我们现在就用一......