1. 程式人生 > >xpath提取多個標籤下的text

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