xpath提取多个标签下的text

在写爬虫的时候,经常会使用xpath进行数据的提取,对于如下的代码:

<div id="test1">大家好!</div>

使用xpath提取是非常方便的。假设网页的源代码在selector中:

data = selector.xpath(‘//div[@id="test1"]/text()‘).extract()[0]

就可以把“大家好!”提取到data变量中去。

然而如果遇到下面这段代码呢?

<div id="test2">美女,<font color=red>你的微信是多少?</font><div>

如果使用:

data = selector.xpath(‘//div[@id="test2"]/text()‘).extract()[0]

只能提取到“美女,”;

如果使用:

data = selector.xpath(‘//div[@id="test2"]/font/text()‘).extract()[0]

又只能提取到“你的微信是多少?”

可是我本意是想把“美女,你的微信是多少?”这一整个句子提取出来。

这还不是最糟糕的,还有第三段代码:

<div id="test3">我左青龙,<span id="tiger">右白虎,<ul>上朱雀,<li>下玄武。</li></ul>老牛在当中,</span>龙头在胸口。<div>

而且内部的标签还不固定,如果我有一百段这样类似的html代码,又如何使用xpath表达式,以最快最方便的方式提取出来?

我差一点就去用正则表达式替换了。还好我去Stack Overflow上面提了问。于是很快就有人给我解答了。

使用xpath的string(.)

以第三段代码为例:

data = selector.xpath(‘//div[@id="test3"]‘)
info = data.xpath(‘string(.)‘).extract()[0]

这样,就可以把“我左青龙,右白虎,上朱雀,下玄武。老牛在当中,龙头在胸口”整个句子提取出来,赋值给info变量。

http://www.tuicool.com/articles/iqQFBn

时间: 2024-10-07 04:43:46

xpath提取多个标签下的text的相关文章

xpath获取当前标签下的所有文本

举个栗子,也是在下爬新浪微博移动端时遇到的问题,微博评论有普通评论.回复他人评论和热门评论,详情: 普通评论 回复他人评论 热门评论 用户评论内容都在<span class="ctt"></span>中,其中,普通评论和热门评论内容都很容易提取,采用.xpath['span[@class='ctt']/text()']即可 但回复他人评论的内容被分割成三个部分,要全部获取代码如下 1 test= comment.xpath(".//span[@clas

Xpath 提取html整个元素(标签与内容)

提取html某标签中文字时,文字中含有:"<sub>2</sub>O<sub>5</sub>",导致提取的文字不符合预期. 解决方法: #coding=utf-8 from lxml import etree from HTMLParser import HTMLParser html = u''' <html> <span id="chTitle">退火对Nb<sub>2</

用xpath提取xml文档指定标签的内容

1 <?xml version="1.0" encoding="UTF-8"?> 2 <书架> 3 <书> 4 <书名 name="vvvb">何茂赟自传</书名> 5 <作者>何茂赟</作者> 6 <售价>500.00</售价> 7 <售价>1234元</售价><售价>1234元</售价>&

前端基础:HTML标签(下)

前端基础HTML标签(下) 1.表单 表单的功能主要用于向服务器传输数据,从而实现客户端与Web服务器的交互.表单能够包含input系列标签,比如:文本字段.复选框.单选按钮.提交按钮等:表单还包含textarea.select和label标签: 表单的属性:action,将表单数据提交到指定服务器的某个程序,程序收到表单提交过来的数据(即表单数据)做相应处理,比如:https://baidu.com:**method**,表单的提交方式get/post/update等,默认为get: 注意 f

jmeter之Xpath提取器

首先创建线程组,添加http请求,具体的设置如图1所示: 图1 然后,再添加后置处理器中的XPath Extractor,具体的参数设置,以及表达式如图2: 图2 可以添加Debug PostProcessor,来查看xpath提取的内容是否正确. 下面是Xpath页面的参数介绍. APPly to:作用范围(返回内容的断言范围)         Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器         Main sample only:仅

jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒子(重要),jq操作滚动条

jQuery---jq操作标签文本(html(),text()),jq操作文档标签(插入,删除,修改),克隆,,jq操作属性,jq操作class属性,jq操作表单value,jq操作css,jq操作盒子(重要),jq操作滚动条 一丶jQ操作标签内文本 html() 标签元素中的内容 /** 替换的内容可以使一个js对象,jq对象,文本 **/ /* 获取值:获取选中标签元素的所有内容 ,包括标签*/ $('ul').html() " <li>1</li> <li&g

xss其他标签下的js用法总结大全

前段时间我遇到一个问题,就是说普通的平台获取cookie的语句为↓ Default 1 <script src=js地址></script> 实际上我们的测试语句可能为↓ Default 1 <script>alert("90sec")</script> 也就是说js语句实际上是位于↓<script></script>的中间. 包括<img>.<input>.<object>.&

【转】解决Ubuntu下Sublime Text 3无法输入中文

前言 sublime很好用,但是ubuntu下不能输入中文,这是一个很大的问题.不知道为什么开发着一直也不解决,好在还是有高手在,总能找到方法.网上方法很多,但是也很乱,现在我将自己的经验总结一下. 首先,我参考了好几篇文章,都是蛮不错的,先列出来: sublime-text-imfix:首先推荐这个方法,最简单,但是在我的系统上有些问题.可用这个的强烈推荐用这个 完美解决 Linux 下 Sublime Text 中文输入:讲的比较明白,也可用参考. Ubuntu下Sublime Text 3

【Android开发经验】&lt;Activity&gt;标签下常见属性介绍

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 下面是Activity标签下所有的属性值,简单了解下这些属性的意思. 还有一些属性没有介绍,因为资料找的好累啊,以后不做这样的工作了,这些属性虽然费了好大劲,但是感觉收获很少,毕竟用的就很少,大家扫一眼就够了,别太费劲去研究这些平常用不到的属性,不利于学习!