scrapy imagepipline:创建简单示例,运行/测试它的命令是什么

时间:2012-02-20 10:07:54

标签: python screen-scraping scrapy

我按照此文档使用scrapy下载图像。 http://doc.scrapy.org/en/latest/topics/images.html

具体来说,我会有这个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 个答案:

答案 0 :(得分:1)

我建议您关注the tutorial,因为您的脚本缺少一些重要的内容,例如。 Request()函数的回调。 该教程很容易在15分钟内完成,并将涵盖您目前缺少的一些方面。

为了使管道和中间件工作,您需要完整的Scrapy引擎。 我建议查看Architecture Overview以了解整个引擎的工作原理。