关于XPath中text()与string()的区别说明

关于XPath中text()与string()的区别说明

学习XPath的时候,很多人是不清楚text()是什么,在哪里定义的,只是看到过别人用过,这篇文档就来对比一下他们的区别。

  1. 含义不同: text()节点测试text类型测试(参见node-tests),string(arg)XPath函数,所以可以在XPath表达式中使用结合使用text(),而string()不能。
  2. 返回结果集类型不同: text()返回的是文本列表类型(一个节点也会返回一个元素的列表),string()返回的是字符串类型。

以下面这段HTML文档为例:


  • \n
    \n 47岁的陶虹:绝顶聪明的女人,都不声不响地拥有了全世界\n

    \n文 | 嘻嘻 \u200b 最近,随着《小欢喜》开播,已经很久没在电视剧荧幕里出现的陶虹,重新回到了大众的视野中。 剧中的她,饰演一位金牌辅导老师。刚出场...\n

    \n
    \n 铁成武\n \n 80\n 1116\n
    \n
  • 提取这段文档的标题实现代码片段如下:

    #!/usr/bin/env python3
    ...
    doc = etree.HTML(resp.text)
    li_list = doc.xpath('//li')
    for item in li_list:
        title1 = item.xpath('div[@class="content"]/a[@class="title"]/text()')[0]
        title2 = item.xpath('div[@class="content"]/a[@class="title"]')[0].xpath('string(.)')
        print(title1)
        print(title2)

    执行结果:

    $ python ./test.py
    47岁的陶虹:绝顶聪明的女人,都不声不响地拥有了全世界

    转载本文时请注明出处及本文链接地址关于XPath中text()与string()的区别说明

    发表评论

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