2014-10-10 3 views
2

안녕 텍스트를 [ "Blahblah", "Bluhbluh", "Blihblih"]. xpath가 반복적으로 div 노드에서 텍스트를 찾길 원합니다. 시도한 내용 : //div/p[descendant-or-self::*]/text()하지만 중첩 된 요소는 추출하지 않습니다.추출 텍스트의 XPath scrapy

건배! 셉

답변

3
당신은 각 p 요소의 XPath의 string() 기능을 사용할 수 있습니다

는 :

>>> import scrapy 
>>> selector = scrapy.Selector(text="""<div> 
... <p>Blahblah</p> 
... <p><a>Bluhbluh</a></p> 
... <p><a><span>Bliblih</span></a></p> 
... </div>""") 
>>> [p.xpath("string()").extract() for p in selector.xpath('//div/p')] 
[[u'Blahblah'], [u'Bluhbluh'], [u'Bliblih']] 
>>> import operator 
>>> map(operator.itemgetter(0), [p.xpath("string()").extract() for p in selector.xpath('//div/p')]) 
[u'Blahblah', u'Bluhbluh', u'Bliblih'] 
>>> 
2
>>> selector.xpath('//div/p/descendant-or-self::*/text()').extract() 
[u'Blahblah', u'Bluhbluh', u'Bliblih'] 

당신은 가까웠다! 당신이해야 할 일은 자손이나 자아의 텍스트를 속성으로 간주하지 말아야한다는 것입니다. []는 속성에 대해 "말하는"경우에 사용되며, 경우에 따라 존재하지 않는 p의 속성을 나타냅니다.