这里我直接说解决办法了
修改前
修改后
images_url = response.xpath("//a[@class='l mr11']/img/@src").extract_first() # 图片地址
item['images_url'] = images_url
images_url = response.xpath("//a[@class='l mr11']/img/@src").extract_first() # 图片地址
list = []
list.append(images_url)
item['images_url'] = list
一上问题就解决了
顺便给大家看一下其他的相关配置吧
spider请求地址拿到图片地址后,我们首先配置一下settings.py
ITEM_PIPELINES = {
'books.pipelines.BooksPipeline': 300,
'scrapy.pipelines.images.ImagesPipeline': 1,
}
IMAGES_URLS_FIELD = "images_url" # image_url是在items.py中配置的网络爬取得图片地址
print("********************************images_url", IMAGES_URLS_FIELD)
#配置保存本地的地址
project_dir = os.path.abspath(os.path.dirname(__file__)) #获取当前爬虫项目的绝对路径
IMAGES_STORE = os.path.join(project_dir, 'images') #组装新的图片路径
IMAGES_MIN_HEIGHT = 100 #设定下载图片的最小高度
IMAGES_MIN_WIDTH = 100 #设定下载图片的最小宽度
IMAGES_EXPIRES = 90 #90天内抓取的都不会被重抓
有些配置可加可不加
IMAGES_URLS_FIELD
IMAGES_SETORE
以上两个配置是必须加的,
还有就是'scrapy.pipelines.images.ImagesPipeline': 1,
下面我们来看看pipelines.py的相关配置
#既然要重写,记得提前引入
from scrapy.pipelines.images import ImagesPipeline
class ArticleImagePipeline(ImagesPipeline):
# 重载ImagePipeline中的item_completed方法,获取下载地址
def item_completed(self, results, item, info):
print("----------------------------------", results)
for ok, value in results: #通过断点可以看到图片路径存在results内
image_file_path = value['path'] #将路径保存在item中返回
item['front_image_path'] = image_file_path
return item
最后就是items.py了
images_url = scrapy.Field()
front_image_path = scrapy.Field()
以上就是所有内容
主要是解决问题,其他的都是次要的,有什么问题欢迎加入小编建立的python web前端,小程序交流群 QQ群: 1102727334
一起学习共同进步