我按照此文档使用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。
答案 0 :(得分:1)
我建议您关注the tutorial,因为您的脚本缺少一些重要的内容,例如。 Request()函数的回调。 该教程很容易在15分钟内完成,并将涵盖您目前缺少的一些方面。
为了使管道和中间件工作,您需要完整的Scrapy引擎。 我建议查看Architecture Overview以了解整个引擎的工作原理。