2012-02-20 2 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, не создавая проект.

Также наберитесь «scrap runpider test.py», но это не сработает. Ошибка: MySpider не найден.

+1

Если вы хотите запустить своего паука из одного скрипта, попробуйте этот фрагмент: [Автономный скрипт для обхода сайта] (http://snippets.scrapy.org/snippets/7/) – reclosedev

+0

@SjaakTrekhaak, I ' вы тестировали этот фрагмент на 'Scrapy 0.14.1', он работает. – reclosedev

+0

@reclosedev вы правы. У меня возникли проблемы с использованием этого в дочернем процессе вместо основного процесса (сигналы могут использоваться только в основном потоке); и путают это в этом вопросе. –

ответ

1

Я предлагаю вам следовать the tutorial, потому что в вашем скрипте не хватает некоторых важных вещей, например. обратный вызов для функции Request(). Учебное пособие довольно легко завершить за 15 минут и охватит некоторые аспекты, которые вы в настоящее время не видите.

Для того, чтобы трубопроводы и средние работы работали, вам понадобится полный двигатель Scrapy. Я рекомендую проверить Architecture Overview, чтобы понять, как работает весь двигатель.