Xpath string()提取多个子节点中的文本

<div>
    <ul class="show">
        <li>275万购昌平邻铁三居 总价20万买一居</li>
        <li>00万内购五环三居 140万安家东三环</li>
        <li>北京首现零首付楼盘 53万购东5环50平</li>
        <li>京楼盘直降5000 中信府 公园楼王现房</li>
    </ul>
</div>

我想要把所有li标签中的文本提取出来,并且放到一个字符串中.

在网上查了下发现使用xpath的string()函数可以实现(string()和text()的区别请自行google)

先看下常见的方法:

>>> from lxml import etree
...
>>> result = html.xpath("//div/ul[@class=‘show‘]")[0]
>>> result.xpath(‘string(.)‘)
 ‘                 275万购昌平邻铁三居 总价20万买一居                 00万内购五
环三居 140万安家东三环                 北京首现零首付楼盘 53万购东5环50平
  京楼盘直降5000 中信府 公园楼王现房             ‘

这是我查到的多数人使用的方法,还有人使用了concat()函数,更麻烦就不提了.

但是上面的匹配明显感觉可以写到一条xpath里面的,为什么非要分开写!忍不住吐槽一下

xpath string()函数的调用写法:

>>> html.xpath("string(//div/ul[@class=‘show‘])")
‘                 275万购昌平邻铁三居 总价20万买一居                 00万内购五
环三居 140万安家东三环                 北京首现零首付楼盘 53万购东5环50平
  京楼盘直降5000 中信府 公园楼王现房             ‘

再吐槽下上面那种写法.在xpath语法里面,点(.)表示当前节点,当前节点不就是html.xpath("//div/ul[@class=‘show‘]")[0]取到的节点元素吗!!!

时间: 2024-08-03 08:24:31

Xpath string()提取多个子节点中的文本的相关文章

CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点

0.参考 1.初始化 In [325]: from scrapy import Selector In [326]: text=""" ...: <div> ...: <a>1a</a> ...: <p>2p</p> ...: <p>3p</p> ...: </div>""" In [327]: sel=Selector(text=text) In [

XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?xml version="1.0" encoding="utf-8" ?> <pets>   <cat color="black" weight="10">     <price>100</price>    

从一个字符串中提取一个子字符串

编写一个函数,它从一个字符串中提取一个子字符串.函数原型如下: int substr(char dst[], char src[],int start, int len) {} 目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 len 个非NUL 字符到 dst数组.在复制完毕之后, dst 数组必须以 NUL字节结尾.函数的返回值是存储于 dst 数组中的字符串的长度. #include<stdio.h> #include<stdlib.h> #de

Xpath轴与步长应用:取某节点下所有子孙节点里的文本内容

最近遇到个需求,需要爬一些数据使用,写好了爬虫后爬到了一段HTML,然后用lxml解析,接下来就是定位到具体节点提取内容.遇到了一个问题,想要提取的内容在一个class名为full-content的<div>中,文本内容有可能就在div中,可有可能在子孙节点中,那怎么全部提取呢?查了一下Xpath有轴与步长的用法, 详细用法参考:http://www.w3school.com.cn/xpath/xpath_axes.asp 轴名称 结果 ancestor 选取当前节点的所有先辈(父.祖父等).

一次完成对多个子节点的全部父级节点查询

大家在做项目的时候,展示树形结构的数据,肯定遇到需要通过父节点递归查询所有子节点的情况, 也应该做过通过子节点查询所有父级节点的需求. 本次遇到的需求是一次性查询多个子节点的所有父级节点的情况. 多个节点我们考虑到要去除重复节点. 常规做法: 1. 数据库中写一个自定义函数,查询当前节点的所有父级节点 DROP FUNCTION if EXISTS fn_getParentNodes; CREATE FUNCTION fn_getParentNodes(currentId VARCHAR(64)

(三)dom4j+Xpath的简单路径表达式获取节点元素内容和属性值

1.导包 2.创建sys-config.xml <?xml version="1.0" encoding="UTF-8"?> <config> <database-info> <driver-name>com.mysql.jdbc.Driver</driver-name> <url>jdbc:mysql://localhost:3306/sys?serverTimezone=GMT%2B8<

学习XML(添加一个子节点) 摘录

reference:http://blog.csdn.net/you_laner/article/details/1112129 这里介绍添加XML节点的方法. 首先定义XML文件:(bookstore.xml) <?xml version="1.0" encoding="utf-8"?> <bookstore> <book genre="fantasy" ISBN="2-9088-1">

检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息

//检查打开的文件是不是ELF格式的文件 //检验ELF头 //获得节头表的地址 //遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和"特别"的section名匹配,则找到此节的地址 //提取"特别"的节中的信息 //显示上面提取的信息 #include<stdio.h> #include<elf.h> #include<stdlib.h> #include<string.h> int main

提取两个数组中不同元素

假设数组: string[] listA ={"1","2","3","4","5"}; string[] listB = {"1","4","5"}; 那么,提取两个数组中不同的元素放到另一个数组中:代码如下: string[] result = listA.Except(listB).Union(listB.Except(listB)).ToA