sed提取两个关键字之间的内容_python提取文本指定内容

sed提取两个关键字之间的内容_python提取文本指定内容示例:<table> <thead> <tr> <th>ID</th> <th>名称</th> <th>电话</th> <th>说明</th> <th>类型</th> <th&g…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

示例:

<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']

这样就获得了想要的结果。

如有更好的方法,请留言告诉我,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196520.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于用户路径分析模型_spark用户行为路径

    关于用户路径分析模型_spark用户行为路径在网页或者营销渠道中,用户行为模型有比较多,基于渠道的,笔者觉得有:渠道类型渠道重要性渠道跳转与流失单渠道,多节点路径分析,漏斗功能多渠道归因分析这里多渠道指的是,单渠道多节点的场景比较好理解,就是进入某个web\小程序,在不同页面之间进行跳转,多渠道这里比较多的就是,同一用户在不同的较大的场景下的流转,比如在小红书种草->微信好友推荐->淘宝上买了。归因分析是通过一定的逻辑方法,计算每个渠道、或者触点对最终结果贡献程度的方法。有一套合理

    2022年8月24日
    11
  • 查看linux执行的命令记录_history命令用法

    查看linux执行的命令记录_history命令用法前言我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会按↑↓箭头来寻找历史的命令记录,那如果我想用1天前执行的某条命令,难道还要按↑100次?显示这样是不现实的,我们可

    2022年7月29日
    5
  • springboot test 测试

    springboot test 测试最近项目中写了一个模块,只写到service给其他地方调用就行,不需要写接口这样的话测试就不方便了,于是想起了springboottest,这里有几个需要注意的地方就是test类必须和主启动类所在的包路径一样,不然报错,还有test类需要加入注解@SpringBootTest(classes=主启动类.class),@RunWith指定的运行器,我只用了springrunner,其他的还有junit,Suite等,然后在方法上加入@Test就可以运行了,运行的方式选择(run方法名withcove

    2022年5月4日
    65
  • object references an unsaved transient instance – save the transient instance be

    object references an unsaved transient instance – save the transient instance be

    2021年8月29日
    60
  • 除了 P 站,还有哪些站?

    除了 P 站,还有哪些站?说p站,估计不知道的人已经很少了,不过今天搜罗君要说是,除了p站还有哪些站?我盲猜,应该很多人思考过这个问题了~咱们按照英文字母顺序ABCD···XYZ来说1.A站AcFun,中国第…

    2022年9月25日
    1
  • rapidxml 文件读写,增加删除节点「建议收藏」

    rapidxml 文件读写,增加删除节点「建议收藏」RapidXml是指XMLDOM解析工具包,是一个快速的读写xml文件的库文件(hpp)。本文旨在提供RapidXml文件读写操作,以及对节点的增加、删除、编译提供一个测试用例,以免忘记。1.读取XML#include”rapidxml.hpp”#include”rapidxml_utils.hpp”#include”rapidxml_print.hpp”#includ…

    2022年7月17日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号