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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM