2013-03-31 72 views
1

場景:包含多個項目的頁面,每個項目包含標題,說明,圖像。當其中一個項目缺少標題時會發生什麼? scrapy如何處理它?似乎scrapy會盲目地選擇所有標題// div [id ='content']/ul/li/div [id ='title']/text(),Scrapy:項目差異

預期的輸出是該行將丟失標題。但我擔心,因爲它會盲目地選擇頁面上的所有標題而不考慮項目上下文。如果第5個項目缺少標題,是不是錯誤地使用第6個項目的標題?

title1 | description | image 
. 
. 
title4 | description | image 
title6 | description | image <--- it's supposed to be missing the title. 
     | description | image 

scrapy是否有辦法解決這個問題?

我在想的解決方法是查看父項元素,然後查看該項目的內部。如果缺少某些東西,請不要顯示它。

+0

你用什麼來選擇你的xpath? 'HtmlXPathSelector','XPathItemLoader'還是別的? –

+0

什麼是您的Scrapy版本,選擇器版本和操作系統?所有可用的詳細*版本*命令:'$ scrapy version -v' –

+0

'HtmlXpathSElector'我使用的是最新的Scrapy版本,Ubuntu 12. – KJW

回答

2

有多種方法可以處理這種情況

1)你可以實現一個管道,可以跳過不需要的

2)您可以在提取部分只有產量增加檢查項目/返回一個需要的項目

你需要了解Scrapy是一個高級爬行框架,也提供了對數據提取的建立支持,你可以使用任何庫來提取你想要的。

+0

什麼是一些內置的數據提取支持,我在哪裏可以找到這些庫? – KJW

+0

HtmlXpathSElector是一個建立支持,你可以使用lxml,beautifulsoup等任何你喜歡的選擇 –