2015-01-05 120 views
2

我想從此http://www.npr.org/rss/#feeds新聞饋送網站獲取鏈接和類別。Scrapy Shell XPath

這是我在scrapy殼的XPath:

a = sel.xpath('//ul[@class="rsslinks"]/li/a/@href').extract() 

b = sel.xpath('//ul[@class="rsslinks"]/li/a/text()').extract() 

但是B的長度是一個比的長度較少。我不知道我在這裏錯過了什麼。但是這會導致數據出現問題。

從下面的圖片,類別名稱爲「最多人分享的故事」,但鏈接是「新聞頭條」

任何幫助,將不勝感激​​

回答

4

這是因爲在結果的第一環節:

<a class="iconlink xml" href="/rss/rss.php?id=1001" target="blank"><strong>News Headlines</strong></a> 

正如你所看到的,沒有直接的孩子「文本」節點,只有一個strong元素。你的xpath不會匹配它。

添加另一個斜線從a標籤獲取所有文本節點:

//ul[@class="rsslinks"]/li/a//text() 
         HERE^ 
+0

謝謝!這是非常有用的信息! – m0rpheu5

+0

在我看來,你的答案的措詞是誤導性的,因爲它表明,在一個名爲「text」的元素節點的意義上有一個'text'元素,就像'strong'一樣。請清楚地說明文本節點不是元素節點。 –

+0

@MathiasMüller非常好的一點,謝謝,我認爲現在應該會更好。而且,順便說一句,謝謝你貢獻'xpath'標籤 - 從你的答案中學到很多東西。 – alecxe

1

與新聞標題標籤/rss/rss.php?id=1001文字似乎是另一個層面下來在<strong> </strong>下,而其他鏈接則不是。

+0

是的,我的壞!沒有注意到,謝謝你的幫助! – m0rpheu5