xpath & 时间:2022-09-05 22:05:36python : 3.6 lxml : 4.2.1 from lxml.html import etree test_html = ''' <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <table id="report1"> <tr rn="1" > <td class="report1_1">1</td> <td class="report1_1">2<br>3<br>4</td> </tr> <tr rn="1" > <td class="report1_1">1.1</td> <td class="report1_1">2.1<br>3.1<br>4.1</td> </tr> </table> </body> </html> ''' if __name__ == '__main__': html = etree.HTML(test_html) tag1 = html.xpath('/html/body/table/tr/td[1]') tag2 = html.xpath('/html/body/table/tr/td[2]') tag3 = html.xpath('/html/body/table/tr/td[2]/text()') print('tag1-[0]-->',tag1[0].text) print('tag2-[0]-->',tag2[0].text) print('tag2-[1]-->', tag2[1].text) print('tag3-->',tag3) b = [str(i) for i in tag3] str = ''.join(b) print('tag3-str-->',str) print('tag2-->',tag2) print('tag2[0]-string-->',tag2[0].xpath('string(.)')) print('tag2[1]-string-->',tag2[1].xpath('string(.)')) tag1-[]--> tag2-[]--> tag2-[]--> 2.1 tag3--> ['', '', '', '2.1', '3.1', '4.1'] tag3-str--> 2342.13.14.1 tag2--> [<Element td at 0x18b9478aec8>, <Element td at 0x18b9478af88>] tag2[]-string--> tag2[]-string--> 2.13.14.1 代码在上面。 简单说一说: requests配合xpath来抓网站数据的时候,不像selenium+xpath。 selenium有 find_element find_elements,区别是带S ,查找第一个元素,和查找所有元素。 requests只有xpath,简单粗暴的直接查找所有元素。所以tag1,要带下标[0]来输出第一个对象,并且用.text来输出文字信息。 tag2,带下标[0]来输出第一个对象,并且用.text来输出文字信息。但是由于对象中有<br>标签,所以只能取得第一个<br>标签前面的数据。 tag3,我们在xpath规则中加入.text()规则,取得这个标签中的文字信息。由于有<br>标签,文字信息会因为<br>而分割称为列表。 我们可以自己重组列表,转为字符串: b = [str(i) for i in tag3]str = ''.join(b)print('tag3-str-->',str) 或者不使用text()规则使用xpath('string(.)'): print('tag2-->',tag2)print('tag2[0]-string-->',tag2[0].xpath('string(.)'))print('tag2[1]-string-->',tag2[1].xpath('string(.)')) 两种方式都可以正常获取td标签中带br标签的信息。 xpath & <tr><td><br>的更多相关文章 jQuery遍历Table tr td td中包含标签 function shengchen() { var arrTR = $("#tbModule").children(); var Context=""; $( ... 根据div 标签 查看数组@class=modulwrap 下面的/table/tbody/tr/td <div class="modulwrap"> <div class="request_title"> <span class=& ... html5 表格标签 table tr td 最重要的三个 <table> 表格声明标签 属性: boarder 边框粗细 style 可配合css 使用 <tr> 行标签 table row ... HTML 表格<;table>;<;caption>;<;th>;<;tr>;<;td>;<;thead>;<;tbody>;<;tfoot>;<;col>;<;colgroup>; <table>标签: 定义和用法: <table>标签定义HTML表格. 简单的HTML表格由table元素以及一个或多个tr.th或td元素组成. tr元素定义表格行,th元 ... jQuery操作Table tr td常用的方法 虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ... 汇总常用的jQuery操作Table tr td方法 虽然现在DIV+CSS进行页的布局大行其道,但是很多地方使用table还是有很多优势,用table展示数据是比较方便的,下面汇总了jQuery操作Table tr td常用的方法,熟记这些操作技巧,下 ... HTML中表格元素TABLE,TR,TD及属性的语法 table:表格元素及属性 <table width="80%" border="1" cellspacing="1" cellpad ... 非正规写法获取不到tr,td <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ... html tr td colspan colspan 属性规定单元格可横跨的列数, 第一行的colspan规定其一行所跨越的列数,要与下一行的<td></td>个数一致 if(!empty ($alarmDesc ... 随机推荐 c语言指针疑惑[转载] c99的动态数组是在栈上面开辟的,而new出来的是在堆上面开辟的.栈和堆的地址是从两端相向增长的.栈很小,一般只有几十k,vc6好像是64k.堆很大,在win32的虚拟地址空间可以分配到2g的内存.栈 ... rhel7网络管理 实验-禁用网卡命名规则: 在GRUB_CMDLINE_Linux=“rd.lvm.lv=rhel/root vconsole.keymap=us vconsole.font=latarcyheb-s ... SQL Server 存储(2/8):理解数据记录结构 在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下. 数据记录存储我们具体的数据,换句话说,它存在 ... 关于 SSIS 并行foreach loop的一个设计思路 SSIS 包在控制流方面的性能优化,主要是提高并行度. 可以设置并发线程数MaxConcurrentExecuteables. SSIS中的foreach loop container 不是并行执行任 ... jquery多种方式实现输入框input输入时的onput,onpropertychange,onchange触发事件及区别 有关inputs输入内容的事件监听,一般我们会想到下面几个关键词:onput,onpropertychange,onchange onput与onchange的一个区分 onput:该事件在 < ... angular4.0项目build发布后,刷新页面报错404 angular4.0项目执行npm run build后,进入页面正常显示. 但是当刷新页面时,报错404,页面未找到. 出现这个问题的原因,应该是找不到路由地址导致的,然后找到了下面的解决方案. 找 ... windows IOCP入门的一些资料 最近需要看一个中间件的IOCP处理模块,需要了解这方面的知识 https://www.codeproject.com/articles/13382/a-simple-application-using ... o2o的关健在于线下! 其实,说到底,O2O不是那么简单的.一堆空降兵和一群自以为是的风投都把所有的线下产业想简单了.没有真正的去了解和体验这个产业,就动不动一个小点子,创新一个小平台就妄想能改变或替代中国某某产业.看看这几 ... Java学习技术分享:Java中的原子操作 学习java需要有一套完整的学习线路,需要有条理性,当下学习java已经有一段时间了,由当初的懵逼状态逐渐好转,也逐渐养成了写技术学习笔记的习惯,今天总结了一下java中的原子操作. 1.Java中的 ... 快速使用CSS 弹性盒子 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现:2009年,W3C提出了一种新的方案 ... 相关文章在表tr td中使用nth-childjs动态增加,删除td,tr,table,div单击td中的img时更改tr背景颜色更改tr和td的边框颜色动态生成的table表单,如果里面tr,td有内容就显示,没有就隐藏表格怎么做jquery动态添加/删除 tr/tdjquery能拿到table里一行tr中某个td的a对象。怎么获得这个table其他a对象【FireFox】在Firefox中,关于隐藏table中某一行tr,其他td的边框显示异常jquery操作table的tr td,并且获得td中的值?汇总常用的jQuery操作Table tr td方法上一篇:*在scanf printf中的作用下一篇:C语言中的printf(),sprintf(),scanf(),sscanf()