Scrapy:Images Pipeline,下载图片
Scrapy: Images Pipeline, download images
以下:scrapy's教程我制作了一个简单的图像爬虫(抓取布加迪的图像)。下面的 EXAMPLE.
中对此进行了说明
但是,按照指南进行操作后,我的爬虫无法正常运行!它会找到所有 URL,但不会下载图像。
我找到了一个鸭子胶带解决方案:替换 ITEM_PIPELINES
和 IMAGES_STORE
这样;
ITEM_PIPELINES['scrapy.pipeline.images.FilesPipeline'] = 1
和
IMAGES_STORE
-> FILES_STORE
但我不知道为什么会这样?我想使用 scrapy 记录的 ImagePipeline。
示例
settings.py
BOT_NAME = 'imagespider'
SPIDER_MODULES = ['imagespider.spiders']
NEWSPIDER_MODULE = 'imagespider.spiders'
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = "/home/user/Desktop/imagespider/output"
items.py
import scrapy
class ImageItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()
imagespider.py
from imagespider.items import ImageItem
import scrapy
class ImageSpider(scrapy.Spider):
name = "imagespider"
start_urls = (
"https://www.find.com/search=bugatti+veyron",
)
def parse(self, response):
for elem in response.xpath("//img"):
img_url = elem.xpath("@src").extract_first()
yield ImageItem(file_urls=[img_url])
您的蜘蛛 returns 的项目必须包含 "file_urls"
文件字段 and/or "image_urls"
图片字段。在您的代码中,您指定了图像管道的设置,但在 "file_urls"
.
中指定了 return 网址
只需更改此行:
yield ImageItem(file_urls=[img_url])
# to
yield {'image_urls': [img_url]}
* scrapy 可以 return 字典对象而不是项目,当你只有一个或两个字段时可以节省时间。
花了几个小时调查为什么内置 ImagePipeline 在我的本地不起作用。
最后,我从文档中找到了这个
The Images Pipeline requires Pillow 4.0.0 or greater. It is used for thumbnailing and normalizing images to JPEG/RGB format.
安装 Pillow 后。正常工作。
以下:scrapy's教程我制作了一个简单的图像爬虫(抓取布加迪的图像)。下面的 EXAMPLE.
中对此进行了说明但是,按照指南进行操作后,我的爬虫无法正常运行!它会找到所有 URL,但不会下载图像。
我找到了一个鸭子胶带解决方案:替换 ITEM_PIPELINES
和 IMAGES_STORE
这样;
ITEM_PIPELINES['scrapy.pipeline.images.FilesPipeline'] = 1
和
IMAGES_STORE
-> FILES_STORE
但我不知道为什么会这样?我想使用 scrapy 记录的 ImagePipeline。
示例
settings.py
BOT_NAME = 'imagespider'
SPIDER_MODULES = ['imagespider.spiders']
NEWSPIDER_MODULE = 'imagespider.spiders'
ITEM_PIPELINES = {
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_STORE = "/home/user/Desktop/imagespider/output"
items.py
import scrapy
class ImageItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()
imagespider.py
from imagespider.items import ImageItem
import scrapy
class ImageSpider(scrapy.Spider):
name = "imagespider"
start_urls = (
"https://www.find.com/search=bugatti+veyron",
)
def parse(self, response):
for elem in response.xpath("//img"):
img_url = elem.xpath("@src").extract_first()
yield ImageItem(file_urls=[img_url])
您的蜘蛛 returns 的项目必须包含 "file_urls"
文件字段 and/or "image_urls"
图片字段。在您的代码中,您指定了图像管道的设置,但在 "file_urls"
.
只需更改此行:
yield ImageItem(file_urls=[img_url])
# to
yield {'image_urls': [img_url]}
* scrapy 可以 return 字典对象而不是项目,当你只有一个或两个字段时可以节省时间。
花了几个小时调查为什么内置 ImagePipeline 在我的本地不起作用。 最后,我从文档中找到了这个
The Images Pipeline requires Pillow 4.0.0 or greater. It is used for thumbnailing and normalizing images to JPEG/RGB format.
安装 Pillow 后。正常工作。