2017-12-01 3 views
1
response.xpath('//*[@id="blah"]//text()') 

私もその1個の<p>タグかかわらず、テキストのリストを取得する何が起こっている私のHTMLは単一ノードscrapyのXPathの中にHTMLを含むすべてのテキストを取得

<p id="blah">This is a simple text <a href="#">foo</a> and this is after tag. </p> 

であると仮定します。このような

[u'This is a simple text', u' and this is after tag.'] 

として私の実際のHTMLコンテンツは巨大であり、私はこれを達成するためにjoinを行う必要があります。また、私はfooを失いますが、joinは失います。このための具体的な方法はありますか?xpathscrapy

私は結果を得たい これは単純なテキストfooで、これはタグの後です。

ここでもfooに注目してください。

おかげ

+1

https://stackoverflow.com/questio ns/40985060/scrapy-css-selector-get-all-inner-tags- – furas

+0

xpathにも適用できますか? –

答えて

1

文字列の参加機能を使用することができますあなたは以下のように1つの文字列として、すべてのテキストノードを取得することができます。

response.xpath('//*[@id="blah"]')[0].text_content() 

出力:

'This is a simple text foo and this is after tag. ' 
1

それは、XPath 2だ場合は、

response.xpath('string-join(//*[@id="blah"]//text())') 
関連する問題