對於要提取巢狀標籤所有內容的情況, 使用string
或//text()
, 注意兩者區別
python
>>> from scrapy
import selector >>> >>> doc = "helloworld!
" >>> >>> sel = selector(text=doc, type='html') >>> >>> sel.xpath("/p[@id='test']/text()").extract()
1
2
3
4
5
6
7
8
>>>
from
scrapy
import
selector
>>>
>>>
doc=
"helloworld!
"
>>>
>>>
sel=
selector
(text
=doc
,type
='html'
)>>>
>>>
sel.
xpath
("/p[@id='test']/text()").
extract()
[ ]
使用text()
python
>>>#使用兩個反斜槓 >>> sel.xpath("//p[@id='test']/text()").extract() [u'hello'] >>> #這樣提取出來是乙個列表, >>> sel.xpath("//p[@id='test']//text()").extract() [u'hello', u'world!'] >>>
1
2
3
4
5
6
7
>>>
#使用兩個反斜槓
>>>
sel.
xpath
("//p[@id='test']/text()").
extract()
[ u
'hello'
]>>>
#這樣提取出來是乙個列表,
>>>
sel.
xpath
("//p[@id='test']//text()").
extract()
[ u
'hello',u
'world!'
]>>>
使用string
python
>>> sel.xpath("//p[@id='test']").xpath('string(.)').extract() [u'helloworld!'] >>> >>> sel.xpath("string(//p[@id='test'])").extract() [u'helloworld!'] >>>
1
2
3
4
5
6
>>>
sel.
xpath
("//p[@id='test']").
xpath
('string(.)').
extract()
[ u
'helloworld!'
]>>>
>>>
sel.
xpath
("string(//p[@id='test'])").
extract()
[ u
'helloworld!'
]>>>
5868037 qq號
[email protected] qq郵箱
scrapy 一次性提取多層巢狀標籤的所有文字
怎樣才能一次性提取多層巢狀標籤的所有文字,而不是通過迴圈判斷來進行拼接呢。詳細如下 假如頁面如下 helloworld 我要的提取結果是 helloworld 這裡就需要注意text 的使用了 首先設定sel selector text doc,type html 如果text 前面使用乙個反斜槓 ...
scrapy使用用Xpath提取深層標籤
在使用scrapy框架做爬蟲時,有兩種方式對標籤內容進行提取 css和xpath。基本的標籤內容,屬性提取都很容易。但對於多層巢狀的標籤,如何提取到最裡層的內容呢?舉個栗子 網頁html內容是 id test helloworld b p 如何一下子提取到hello world 呢?用css的話需要...
24 Scrapy資料的提取
從網頁中提取資料,scrapy 使用基於 xpath 和 css 表示式的技術叫做選擇器。以下是 xpath 表示式的一些例子 html head title html head title text td div class slice 選擇器有四個基本的方法,如下所示 s.n.方法 描述 ext...