xpath提取多個標籤下的text
阿新 • • 發佈:2019-01-08
在寫爬蟲的時候,經常會使用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