簡體   English   中英

xpath選擇節點文本和子節點

[英]xpath select node texts and child nodes

我正在使用python scrapy從網站上抓取一些數據。

網站內容是這樣的

 <html>
  <div class="details">
  <div class="a"> not needed</div>
  content 1
  <p>content 2</p>
  <div>content 2</div>
  <p>content 2</p>
  <div>content 2</div>
  <p>content 2</p>
  <div class="b"> this is also not needed</div>
  </div>
 </html>

我需要獲取除類a,b的div外的完整html數據。

所以我的輸出將像這樣

<div class="details">   
content 1
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
<div>content 2</div>
<p>content 2</p>
</div>

我該如何為此寫正確的xpath,或者應該為類'details','a','b'的div寫xpath並使用字符串操作刪除類為'a','b'的div?

請注意,這里的內容是“ details”類的div的文本,不是div的子級

你可以得到所有的孩子除了div帶班ab使用node()self::語法:

//div[@class="details"]/node()[not(self::div[@class="a" or @class="b"])]

使用scrapy shell演示:

$ scrapy shell index.html
>>> nodes = response.xpath('//div[@class="details"]/node()[not(self::div[@class="a" or @class="b"])]').extract()
>>> print ''.join(nodes)
  content 1
  <p>content 2</p>
  <div>content 2</div>
  <p>content 2</p>
  <div>content 2</div>
  <p>content 2</p>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM