Scrapy爬取ammmi图片

相关配置:

python version:3.7

IDE:Pycharm

environment:windows10

Framework:Scrapy

相关链接:

Website:

github:https://github.com/daorenfeixueyuhua/PythonStudy.git

ProjectName:ammmi

前期设计:

base_url: https://www.ammmi.com/category/dongmantupian
// 获取某类图片的网页的列表
x = response.xpath('//div[@class="mi_cont "]//ul/li/h3/a/@href').extract()下一列:
base_url+'page/pagesize'图片种类名称:
// 获取图片种类名称x = response.xpath('//h2[@class="titletips"]/text()').extract_first()
// 获取图片url
图片下载:x = response.xpath('//a[@class="NavLinks"]/@href').extract_first()
// 命名图片
picture_name = x[58:-4]web_name  = 'ammmi'save_directory= '../resource/' + web_name + '/' + title + '/' + picture_name + '.jpg'
// Item设计
Item(title,picture_name,download_url,save_directory)

源码:

items.py

# -*- coding: utf-8 -*-# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.htmlimport scrapyclass AmmmiItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# 图片标题title = scrapy.Field()# 图片名picture_name = scrapy.Field()# 图片下载地址image_url = scrapy.Field()# 图片保存地址image_path = scrapy.Field()# pass

ammi_sipder.py

import scrapy
from ammmi.items import AmmmiItemclass AmmiSipder(scrapy.Spider):# spider namename = 'ammmi'# 表示允许爬虫爬的网站allowed_domains = ['www.ammmi.com']count = 0page_num = 1web_name = 'ammmi'base_url = 'https://www.ammmi.com/category/dongmantupian'start_urls = ['https://www.ammmi.com/category/dongmantupian']def parse(self, response):# 获取图片urlsimg_list = response.xpath('//a[@class="NavLinks"]/@href').extract()if len(img_list):for img in img_list:item = AmmmiItem()item['title'] = response.xpath('//h2[@class="titletips"]/text()').extract_first()item['picture_name'] = img[58:-4]item['image_url'] = imgself.count += 1# if self.count >= 50:#     returnyield itempage_list = response.xpath('//div[@class="mi_cont "]//ul/li/h3/a/@href').extract()if len(page_list) == 0:returnelse:for page in page_list:# 进入某类图片htmlyield scrapy.Request(page, callback=self.parse)# 控制图片种类,并保证结束if self.page_num >= 30:returnself.page_num += 1# 下一分页类图片yield scrapy.Request(self.base_url + '/page/' + str(self.page_num), callback=self.parse)

pipelines.py

# -*- coding: utf-8 -*-# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import scrapy
from scrapy.exceptions import DropItem
import os
from scrapy.utils.project import get_project_settings
from scrapy.pipelines.images import ImagesPipelineclass AmmmiPipeline(object):def process_item(self, item, spider):# r = requests.get(item['download_url'])# path = '../resource/'# if 'resource' not in os.listdir('../'):#     os.mkdir(path)# dirs = os.listdir(path)# if item['title'] not in dirs:#     os.mkdir('../resource/'+item['title'])# with open(item['save_directory'], 'wb') as f:#     f.write(r.content)return itemclass AmmmiImagesPipeline(ImagesPipeline):IMAGES_STORE = get_project_settings().get("IMAGES_STORE")def get_media_requests(self, item, info):yield scrapy.Request(item['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")# if item['title'] not in os.listdir(self.IMAGES_STORE):# os.mkdir(self.IMAGES_STORE + '/' + item['title'])# 更改文件名# os.rename(self.IMAGES_STORE + "/" + image_paths[0], self.IMAGES_STORE + "/" + item['title'] + '/' + item['picture_name'] + '.jpg')# 更改图片路径名# item['image_path'] = self.IMAGES_STORE + "/" + item['title'] + '/' + item['picture_name']# item['image_paths'] = image_pathsreturn item

注:item_completed去掉注释部分,即可实现按图片title目录分类保存图片,但是很抱歉,此处存在一个bug,只能保存一张不图片(若那位大佬发现,请告诉我,感激不敬,谢谢)。

settings.py

BOT_NAME = 'ammmi'SPIDER_MODULES = ['ammmi.spiders']
NEWSPIDER_MODULE = 'ammmi.spiders'# Obey robots.txt rules
ROBOTSTXT_OBEY = False# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {# 'ammmi.pipelines.AmmmiPipeline': 300,'ammmi.pipelines.AmmmiImagesPipeline': 300,
}
IMAGES_STORE = "../Images"

效果展示:

感兴趣的朋友,可以在github上克隆运行使用!

能力有限,不足之处,还请多多包涵!

谢谢!

Scrapy爬取ammmi图片相关推荐

  1. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  2. Scrapy爬取美女图片续集

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  3. scrapy爬取昵图网图片

    一 : 创建scrapy项目 (1) 使用命令创建项目 : scrapy startproject nipic[项目名可以随意] (2) 使用命令创建一个爬虫文件 : scrapy genspider ...

  4. scrapy爬取美女图片

    使用scrapy爬取整个网站的图片数据.并且使用 CrawlerProcess 启动. 1 # -*- coding: utf-8 -* 2 import scrapy 3 import reques ...

  5. 三十一、Scrapy爬取百度图片

    @Author:Runsen Runsen近段时间进入Scrapy,写了几个爬虫练练手,就找百度图片入手了.本文就是Scrapy的入门文章. 文章目录 目标 创建项目 分析逻辑 代码 目标 爬取 百度 ...

  6. scrapy爬取斗鱼图片并且重命名后保存

    斗鱼的api为: http://capi.douyucdn.cn/api/v1/live?limit=20&offset=0 建立一个scrapy爬虫 douyu.py import json ...

  7. 使用Scrapy爬取斗鱼图片

    1.具体文件结构 2.代码: items # -*- coding: utf-8 -*-# Define here the models for your scraped items # # See ...

  8. python+scrapy爬取斗鱼图片

    创建scrapy的项目请参考:https://blog.csdn.net/qq_35723619/article/details/83614670 items的实现: DouyumeinvSpider ...

  9. Scrapy 爬取今日头条街拍图片

    scrapy 爬取今日头条图片保存至本地 之前用 requests 爬取过今日头条街拍的图片,当时只是爬取每篇文章的缩略图,今天尝试用 scrapy 来大规模爬取街拍详细图片. 分析页面 今日头条的内 ...

最新文章

  1. 深度学习目标检测相关论文资源合辑
  2. 花里胡哨,不协调统一的界面,正如看到一个穿花里胡哨衣服的人,让人作呕,不想接近。...
  3. Vicor再携创新产品“登陆”ODCC大会,有详情!
  4. win11文件夹怎么放到文件栏
  5. mysql php 流式读取_PHP MySQL 读取数据
  6. 互联网和大数据是什么意思_大数据和互联网的区别是什么意思
  7. 用与非门设计血型配对电路_利用与非门CD4011做一个防盗报警器,那些高大上就这么简单...
  8. Python基础 - MySQLdb模块
  9. 使用TensorFlow 来实现一个简单的验证码识别过程
  10. outlook 邮件 设置延迟送信
  11. java之备忘录模式,java设计模式之备忘录模式
  12. php td背景颜色改变,JavaScript实现点击单元格改变背景色的方法
  13. 7. COM编程——初始化并创建COM对象
  14. c语言linux系统宏,Linux下C语言中的预定义宏
  15. DB2 SQL执行计划
  16. Java游戏编程技术-1
  17. UML-----构件图与部署图
  18. vc编程的ime输入法菜单开发
  19. 使用 Microsoft Symbol Server 获取调试符号文件
  20. 干货知识:高清监控怎么选配交换机

热门文章

  1. 在手机上查看vue项目
  2. Oracle之where之后的case when执行不同的条件
  3. 【语音识别】基于matlab GUI MFCC+VAD端点检测智能语音门禁系统【含Matlab源码 451期】
  4. 美菜网php待遇怎么样,美菜网春季招聘
  5. 什么是SVN(Subversion)?
  6. 使用Oracle VM Virtual BOX安装Solaris11.4和图形化界面
  7. MATLAB算法实战应用案例精讲-【智能优化算法】 基于帕累托包络的选择算法II(PESA-II)(附MATLAB代码实现)
  8. SQL Server 2005的身份验证模式修改步骤
  9. 河北科技大学电子商务L122班级介绍
  10. 超融合如何克服启动风暴