2012-02-20 24 views
0

我遵循本文檔使用scrapy下載圖像。 http://doc.scrapy.org/en/latest/topics/images.htmlscrapy imagepipline:創建簡單的示例,運行/測試的命令是什麼

具體來說,我想有這樣的test.py:

from scrapy.contrib.pipeline.images import ImagesPipeline 
from scrapy.exceptions import DropItem 
from scrapy.http import Request 

from My.items import ImageItem 

item = ImageItem() 
item['image_urls'] = ['http://url/123.jpg'] 

class MySpider(ImagesPipeline): 

    def get_media_requests(self, item, info): 
     for image_url in item['image_urls']: 
      yield Request(image_url) 

    def item_completed(self, results, item, info): 
     image_paths = [x['path'] for ok, x in results if ok] 
     if not image_paths: 
      raise DropItem("Item contains no images") 
     item['image_paths'] = image_paths 
     return item 

我的問題是:什麼是命令行我應該運行測試這test.py來驗證下載圖像。

更多信息: 我知道命令「scrapy crawl project_name」,但我更喜歡測試這個test.py而不必創建一個項目。

還遇到「scrapy runspider test.py」,但它不起作用。錯誤:找不到MySpider。

+1

如果你想從單個腳本運行你的蜘蛛,請嘗試以下代碼片段:[獨立腳本來抓取一個網站](http://snippets.scrapy.org/snippets/7/) – reclosedev 2012-02-20 18:28:44

+0

@SjaakTrekhaak,我測試過'Scrapy 0.14.1'上的代碼片段,它工作正常。 – reclosedev 2012-02-21 14:15:57

+0

@reclosedev你是對的。我在使用子進程而不是主進程時遇到了問題(信號只能在主線程中使用);並在這個問題上感到困惑。 – 2012-02-21 15:56:44

回答

1

我建議你按照the tutorial,因爲你的腳本缺乏一些重要的東西,例如。您的Request()函數的回調。 該教程很容易在15分鐘內完成,並且會涵蓋您目前缺少的一些方面。

爲了使管道和中間件工作,您需要完整的Scrapy引擎。 我建議查看Architecture Overview以瞭解整個發動機的工作原理。

相關問題