xpath获取指定的非连续索引的子元素的文本数据
示例:
<table> <thead> <tr> <th>ID</th> <th>名称</th> <th>电话</th> <th>说明</th> <th>类型</th> <th>位置</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>11</td> <td>111111</td> <td>1111111</td> <td>11111111</td> <td>111111111</td> </tr> <tr> <td>2</td> <td>22</td> <td></td> <td></td> <td>22222222</td> <td>222222222</td> </tr> </tbody>
</table>
如果上述代码是列表页中要获取的部分代码,现在要获取 所有列表页 的tbody标签中每个tr标签下 除第三、四个td标签(这2个中可能有数据,也可能无数据) 外的其他4个td标签中的数据,该如何获取?
如果使用如下方式获取:
res = html.xpath('//tbody/tr/td/text()')
print(res)
则结果为:
['1', '11', '111111', '1111111', '11111111', '111111111', '2', '22', '22222222', '222222222', ...]
这样不方便清洗不需要的数据。
可以分三步来获取数据。
第一步:获取所有的td节点
res = html.xpath('//tbody/tr/td')
print(res)
结果为:
[<Element td at 0x93cd9c8>, <Element td at 0x93cdbc8>, <Element td at 0x93cdd48>, <Element td at 0x93cd708>, <Element td at 0x93cddc8>, <Element td at 0x93d74c8>, <Element td at 0x93d7d08>, <Element td at 0x93d7048>, <Element td at 0x93d7288>, <Element td at 0x93d7548>, <Element td at 0x93d7888>, <Element td at 0x93d7388>]
第二步:将大list分割成多个小list,每个小list包含6个td节点
res2 = [res[s : s + 6] for s in range(0, len(res), 6)] #将大list分割成多个小list,每个小list包含6个td节点
print(res2)
结果为:
[[<Element td at 0x93cdb48>, <Element td at 0x93cd788>, <Element td at 0x93cd848>, <Element td at 0x93cdd08>, <Element td at 0x93cdf88>, <Element td at 0x93d7e48>], [<Element td at 0x93d7e08>, <Element td at 0x93d7388>, <Element td at 0x93d7888>, <Element td at 0x93d7548>, <Element td at 0x93d7808>, <Element td at 0x93d7288>]]
第三步:循环获取每个小list中的每个td节点的文本数据,并剔除不需要的数据
for x in res2:res3 = []for y in x:res4 = y.xpath('text()')res3.append(str(res4).strip("[']"))res3 = res3[:2] + res3[4:] #只保留除了第3、4个td标签外的其他4个td标签的数据print(res3)
结果为:
['1', '11', '11111111', '111111111']
['2', '22', '22222222', '222222222']
这样就获得了想要的结果。
如有更好的方法,请留言告诉我,谢谢!
xpath获取指定的非连续索引的子元素的文本数据相关推荐
- css 获取第一个a标签,CSS-伪类获取除第一个之外的其他子元素
若实现效果如下,css伪类可以把握的死死的↓↓↓ 举个栗子: 1 2 3 方法一: :not(selector) 选择器匹配非指定元素/选择器的每个元素. :first-child 选择器用于选取属于 ...
- CSS-伪类获取除第一个之外的其他子元素
若实现效果如下,css伪类可以把握的死死的↓↓↓ 举个栗子: <div class="contents"><div>1</div><div ...
- JS与jQuery获取任意事件的子元素下标(获取当前类数组的某一子元素下标)
JavaScript方法 var child = document.getElementsByClassName("child");for(var i=0;i<child.l ...
- 【MySQL】MySQL的存储引擎和索引详解(聚集索引和非聚集索引)
目录 一.MySQL存储引擎 1.1 Innodb引擎 1.2 MyISAM引擎 1.3 InNoDB与MyISAM异同 1.4 两种引擎的选择 二.索引(Index) 2.1 InnoDB存储引擎 ...
- 聚集索引与非聚集索引的总结
一.索引简介 众所周知,索引是关系型数据库中给数据库表中一列或多列的值排序后的存储结构,SQL的主流索引结构有B+树以及Hash结构,聚集索引以及非聚集索引用的是B+树索引.这篇文章会总结SQL Se ...
- SQLServer之创建非聚集索引
开始之前 典型实现 可以通过下列方法实现非聚集索引: UNIQUE 约束 在创建 UNIQUE 约束时,默认情况下将创建唯一非聚集索引,以便强制 UNIQUE 约束. 如果不存在该表的聚集索引,则可以 ...
- mysql创建非聚集索引_聚集索引和非聚集索引的区别
作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...
- 聚集索引和非聚集索引[转]
作者:min10 来源:博客园 时间:2008-12-22 阅读:562 次 原文链接 [收藏] 聚集索引的区别 聚集索引:物理存储按照索引排序 非聚集索引:物理存储不按照索引排序 优势与 ...
- 聚集索引和非聚集索引的区别有哪些
SQL SERVER提供了两种索引:聚集索引和非聚集索引.其中聚集索引表示表中存储的数据按照索引的顺序存储,检索效率比非聚集索引高,但对数据更新影响较 大.非聚集索引表示数据存储在一个地方,索引存储在 ...
最新文章
- ssd测试软件cy,目标检测实践_tensorflow版SSD模型测试
- 成功解决OSError: cannot open resource File F:Python36\lib\site-packages\PIL\ImageFont.py, self.font
- java 10zhuan8,Java代码 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换
- 001 GIt的基本操作
- 16-垃圾回收相关概念
- 系统英伟达gpu驱动卸载_绕过CPU,英伟达让GPU直连存储设备
- 【Leetcode | 1】3. 无重复字符的最长子串
- java 获取td_[Java教程]jQuery获取table表中的td标签
- anaconda管理不同版本Python
- Python使用装饰器捕获异常,并写入日志,不中断进程
- class AT where T:new()相关知识点
- Codeforces Round #374 (Div. 2) C. Journey DP
- K近邻算法(k-Nearest Neighbour, KNN)
- 计算机配件价格上涨,显卡涨价风声再起 PC配件涨价什么时候是个头
- 在大学学什么? 学思维方法!什么是知识结构化?
- 市场导向还是技术导向
- 流程变革,从推倒三座大山开始
- dayjs 计算两个日期差
- ARM SIMD NEON 简介 (翻译自 Introducing NEON Development Article)
- 苹果手机的专用充电宝有哪些?苹果官方授权无线充电宝推荐