Python - 爬虫 - Xpath定位之starts-with()和string()函数的简单使用

文章目录

  • Python - 爬虫 - Xpath定位之starts-with()和string()函数的简单使用
    • starts-with()
      • 1. 函数原型
      • 2. 使用starts-with()获取相同字符开头的多个标签
    • string()
      • 1. 函数原型
      • 2. 使用string()获取标签套标签的文本内容
    • 参考

starts-with()

1. 函数原型

函数 解释
fn:starts-with(string1,string2) 如果 string1 以 string2 开始,则返回 true,否则返回 false。
例子:starts-with(‘XML’,‘X’)
结果:true

2. 使用starts-with()获取相同字符开头的多个标签

测试用的HTML

<li class="tag-1">列表项_1</li>
<li class="tag-2">列表项_2</li>
<li class="tag-3">列表项_3</li>
<li class="item-4">列表项_4</li>

使用starts-with()获取class属性开头为"tag"<li>标签的文本

from lxml import etreehtml_txt = """
<li class="tag-1">列表项_1</li>
<li class="tag-2">列表项_2</li>
<li class="tag-3">列表项_3</li>
<li class="item-4">列表项_4</li>
"""# etree选择器
selector = etree.HTML(html_txt)
# 使用starts-with()获取class属性开头为"tag"的<li>标签的文本
contents = selector.xpath('//li[starts-with(@class, "tag")]/text()')# 打印获取到的文本
for content in contents:print(content)

运行结果

列表项_1
列表项_2
列表项_3

代码解释

  • 可以看到结果不包括这一项<li class="item-4">列表项_4</li>
  • starts-with(string1,string2)
    该函数比较的是两个字符串,我们先通过@class获取到相应<li>标签的class属性值,然后再根据string2匹配,成功则返回true,选取该<li>标签,false则不选取

string()

1. 函数原型

函数 解释
fn:string(arg) 返回参数的字符串值。参数可以是数字、逻辑值或节点集。
例子:string(314)
结果:“314”

2. 使用string()获取标签套标签的文本内容

测试用的HTML

<div class="red">内容1<div>内容2<div>内容3</div></div>
</div>

使用string()获取标签套标签的文本内容

from lxml import etreehtml_text = """
<div class="red">内容1<div>内容2<div>内容3</div></div>
</div>
"""selector = etree.HTML(html_text)# 选择class属性为"red"的list,选择0号项(因为只有1个符合条件的div)
content1 = selector.xpath('//div[@class="red"]')[0]
# 选择当前结点返回字符串
content2 = content1.xpath('string(.)')# 打印输出字符串
print(content2)

运行结果

内容1内容2内容3

代码解释

  • string()参数可以是数字、逻辑值或节点集

  • string(.)表示选择当前结点返回字符串

    尝试使用string(div)

    content2 = content1.xpath('string(div)')
    print(content2)
    

    运行结果

    内容2内容3

参考

  • 菜鸟教程XPath、XQuery 以及 XSLT 函数函数参考手册:https://www.runoob.com/xpath/xpath-functions.html

  • 《从零开始学Python网络爬虫》 - 罗攀 蒋仟

Python - 爬虫 - Xpath定位之starts-with()和string()函数的简单使用相关推荐

  1. Python爬虫——XPath的使用

    Python爬虫--XPath的使用 使用实例一:获取需要的文字 1.导入需要使用的模块 import urllib.request from lxml import etree 2.发送请求访问网站 ...

  2. Python 爬虫 xpath 数据解析基本用法

    Python 爬虫 xpath 数据解析基本用法 1. 基本语法 1.1 解析 html 语法 1.2 获取标签 1.3 获取标签中的内容 1.4 获取标签中的属性 1.5 通过内容寻找结点 2. 实 ...

  3. python爬虫,记录爬取全球所有国家-首都的简单爬虫

    python爬虫,记录爬取全球所有国家-首都的简单爬虫 本来以为简单至极,没想到获取数据还是花费了大把功夫.先上图 <table> <tr> <td> <st ...

  4. python中xpath定位_xpath最新:关于python中的xpath解析定位_爱安网 LoveAn.com

    关于"xpath"的最新内容 聚合阅读 这篇文章主要介绍了关于python中的xpath解析定位,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧... 这篇文章主要 ...

  5. Python爬虫xpath语法及案例使用

    Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...

  6. python爬虫xpath的语法

    有朋友问我正则,,okey,其实我的正则也不好,但是python下xpath是相对较简单的 简单了解一下xpath: XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML ...

  7. pythonxpath定位_selenium+python自动化-xpath定位语法

    前言 右键查看目标元素的xpath地址,这样查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. 什么是xpath呢? ...

  8. python—selenium —xpath定位方法详解

    前言 今天我们来聊聊selenium -- xpath定位方法,我们都知道selenium有八大定位策略分别是id.name.class name.tag name.link text.partial ...

  9. python xml xpath定位_selenium3 + python - xpath定位

    什么是xpath呢? 官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记语言3的子集)文档中某部分位置的语言.反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来 ...

最新文章

  1. 全局组、域本地组、通用组到底有什么区别?它们之间的关系如何?
  2. 牛客 - 交换(思维+找循环节)
  3. C++之字节对齐与结构体大小
  4. RMI强制Full GC每小时运行一次
  5. linux查看cpu缓存大小,如何在Linux中获取CPU Cache的大小
  6. 一个德国设计奖,怎么就成了中国品牌的财富密码
  7. 什么是本地化部署、IaaS、PaaS、SaaS、DaaS?
  8. [python3]读取docx每个段落下的table数据
  9. Qt实现全局键盘事件监听器-Windows
  10. everedit选择_everedit选择_文本编辑器软件EverEdit怎么样?EverEdit相关功能介绍
  11. 微信小程序跳转公众号h5页面
  12. 2023.02.09 草图大师厨房效果图1skp素材效果图
  13. 游戏开发之路-hxx
  14. Java设计模式-程序员内功修炼-目录
  15. C++ 对OPENCV rect矩形进行颜色填充
  16. 信息系统项目管理师论文范文:整体管理篇
  17. 尚硅谷Shell学习笔记
  18. libgdx教程_使用libgdx进行Android游戏开发–一天中的原型,第1a部分
  19. 目标检测论文解读复现之一:基于改进YOLOv5的整车原木数量检测方法——TWD-YOLOv5(代码已复现)
  20. Python Argparse 库讲解特别好的

热门文章

  1. Unity ParticleSystem用OnParticleTrigger制作简易炮弹触发爆炸效果
  2. 【精辟版】通俗地说清Kruskal与Prim算法的区别
  3. Spring Boot通过ApplicationArguments获取args参数
  4. RUNJS优秀代码搜集
  5. 新站发布——寻爱交友网
  6. Sentinel 控制台
  7. 算法衡量auc_优化AUC两遍学习算法
  8. VLC 视频pause后seek画面概率性卡主问题分析记录
  9. IDEA报错OutofMemory
  10. 这里是最全的15个设计风格总结!