2012-08-04 45 views
4

經過多年勉強編碼鏟運機爲正則表達式和BeautifulSoup等等的大雜燴我發現Scrapy,我幾乎算作今年的聖誕禮物嘍!使用它是很自然的,它似乎是爲了使幾乎所有的東西都優雅和可重用而建造的。Scrapy:如何構建一個項目從幾個URL收集信息?

但我在的情況我不知道如何解決:我的蜘蛛抓取和擦傷的列表頁A,我從中產生一組項目。但是對於每一個項目,我需要獲取一個獨特的互補鏈接(由一些刮取的信息構建而成,但並不明確指出Scrapy可能遵循的頁面上的鏈接)以獲取更多信息。

我的問題是兩個部分:什麼是爬行過程之外獲取的URL協議?我如何以優雅的方式從多個來源構建項目?

這部分已在StackOverflow上一個previous question問(回答)。但是我更關心Scrapy的哲學應該是在這個用例中 - 當然不是無法預料的可能性?我想知道這是否是這些管道註定要用於的事情之一(從主要信息中推導出的次要來源中添加的信息是一個「後處理」實例),但是最好的方法是什麼?不完全搞亂Scrapy的高效異步組織?

+1

你是什麼意思BT>的爬行程序之外獲取的網址是什麼? – warvariuc 2012-08-04 17:57:52

+0

@warwaruk:抓取通常具有(一組)起始URL,獲取這些頁面並將找到的鏈接添加到隊列中。通過「抓取過程之外」,我的意思是獲取既不在起始集中也不是作爲獲取頁面中的錨點的鏈接---我的意思是從被刮取的信息中算法推導出的URL。 – 2012-08-04 18:03:09

+0

@warwaruk:謝謝,這很完美!我還有一個問題:從多個不能以相同方式解析的網站(比如亞馬遜的列表和沃爾瑪的列表)進行搜索時,最好的做法是什麼?我應該做幾個蜘蛛嗎?在同一個蜘蛛中,是否有可能根據域名進行多次回調? – 2012-08-05 14:20:04

回答

2

在抓取過程之外抓取URL的協議是什麼?

當你創建一個Request給它一個url時,你從什麼地方下載url並不重要。你可以從頁面中提取它,或者以其他方式構建。

我如何建立一種優雅的方式從多個來源的項目?

使用Request.meta

+0

最後一個問題,假設我有多個蜘蛛,是有可能,所有項目被送入同一管道,然後用[手冊中描述的技術(http://doc.scrapy.org/en/0.14/主題/ item-pipeline.html#item-pipeline-example-with-resources-per-spider)合併「重複」? – 2012-08-05 14:36:47

+0

我不明白 - 需要更多信息。我建議創建一個新問題,如果它與此不相關。 – warvariuc 2012-08-05 14:39:44

相關問題