一 : 创建scrapy项目
(1) 使用命令创建项目 : scrapy startproject nipic[项目名可以随意]
(2) 使用命令创建一个爬虫文件 : scrapy genspider -t basic np nipic.com
参数说明:
-t basic : 使用basic模版创建文件
np : 创建的爬虫文件名
nipic.com : 要爬取网站的域名(本次爬取的是昵图网)
(3) 项目结构图

二 : 爬取思路分析
(1) 打开昵图网首页, 找到一级导航菜单

备注 : 本次爬取我们只爬取 设计, 摄影, 多媒体 三个一级菜单
(2) 我们用工开发者工具获取到这三个一级菜单的url

(3) 我们点击一级菜单获取到它所对应的二级菜单url


(4) 我们随便点击一个二级菜单回进入菜单列表页, 此时我们需要获取分页页码, 进而可以爬取每一页的图片

(5) 获取每一页的图片(此次爬取我们只爬取大图片), 我们点击小图片会进入的大图片,然后获取大图片的路径
(6) 开始爬取并下载到本地

三 : 代码

(1) 首先编写 items.py
class NipicItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()# 创建保存url的容器url = scrapy.Field()
(2) 编写核心的爬虫文件 np.py
# -*- coding: utf-8 -*-
import scrapyfrom scrapy.http import Requestfrom nipic.items import NipicItemclass NpSpider(scrapy.Spider):name = "np"allowed_domains = ["nipic.com"]start_urls = ['http://www.nipic.com/']def parse(self, response):#获取所有的一级导航菜单的urlnavUrls = response.xpath("//div[@class='fl nav-item-wrap']/a/@href").extract()#print(navUrls)newNavUrls = navUrls[1:4]  # ['/design/index.html', '/photo/index.html', '/media/index.html']#print(newNavUrls)for i in newNavUrls:# 获取完整的url ---> http://www.nipic.com/design/index.htmlnavUrl = response.urljoin(i)#print(navUrl)# 交由下一个回调函数处理yield Request(url=navUrl, callback=self.secondNavCallback)# 处理二级导航菜单def secondNavCallback(self, response):# 得到所有二级菜单的urlsecondNavUrls = response.xpath("//div[@class='menu-box-bd']/dl/dt/div/a/@href").extract()#print(secondNavUrls)for i in secondNavUrls:secondNavUrl = response.urljoin(i)yield Request(url=secondNavUrl, callback=self.imagePageCallback)# 处理点击二级菜单后的图片列表页def imagePageCallback(self, response):# 得到所有的分页页码pages = response.xpath("//div[@class='common-page-box mt10 align-center']/a/em/text()").extract()#print(pages)# 获取分页链接  /design/acg/index.html?page=2pageUrls = response.xpath("//div[@class='common-page-box mt10 align-center']/a/@href").extract()#print(pageUrls)pageUrl = pageUrls[0:1]#print(pageUrl)# 得到完整链接pageUrlBase = response.urljoin(pageUrl[0])#print(pageUrlBase)# 截取公共部分commonPageUrl = pageUrlBase[0:-1]# 得到最大的页码maxPage = pages[-1]for i in range(2,int(maxPage)+1):# 拼接分页链接url = commonPageUrl + str(i)#print(url)yield Request(url=url, callback=self.imageListCallback)# 处理每一页的每一张图片def imageListCallback(self, response):# 获取图片的urlimageUrls = response.xpath("//div[@class='search-result overflow-hidden']/ul/li/a/@href").extract()#print(len(imageUrls))for url in imageUrls:imageUrl = url#print(imageUrl)yield Request(url= imageUrl, callback=self.imageDetailCallback)# 正式得到图片def imageDetailCallback(self, response):# 创建 NipicItem 对象nipicItem = NipicItem()# 得到图片image = response.xpath("//div[@id='static']/img/@src").extract()#print(image)nipicItem["url"] = imageyield nipicItem
(3) 修改setting.py(防止反爬虫), 主要修改以下三个部分

将True改为False

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

模拟浏览器

# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0'

防止cookie

# Disable cookies (enabled by default)
COOKIES_ENABLED = False

使用piplines

# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {'nipic.pipelines.NipicPipeline': 300,
}

scrapy爬取昵图网图片相关推荐

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

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

  2. Scrapy爬取ammmi图片

    Scrapy爬取ammmi图片 相关配置: python version:3.7 IDE:Pycharm environment:windows10 Framework:Scrapy 相关链接: We ...

  3. Scrapy爬取美女图片续集

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

  4. Scrapy框架爬取昵图网图片

    Scrapy 图片爬虫构建思路为: 1. 分析网站 2. 选择爬取方式和策略 3. 创建爬虫项目-->定义items 4. 编写爬虫文件 5. 调试pipelines与settings 6. 调 ...

  5. scrapy爬取美女图片

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

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

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

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

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

  8. 爬虫项目:scrapy爬取昵图网全站图片

    一.创建项目.spider,item以及配置setting 创建项目:scrapy startproject nitu 创建爬虫:scrapy genspider -t basic nituwang ...

  9. 使用Scrapy爬取斗鱼图片

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

最新文章

  1. 基于Adaboost算法的人脸检测分类器!
  2. 《AOSuite 开发手册》之AOSuite 服务端开发
  3. 与数据相关的运算符和伪指令 offset align ptr type lengthof sizeof label 间接寻址 间接操作数 数组 变址操作数 指针 jmp, loop
  4. plsql programming 18 包
  5. 软件测试测试 python_Python测试简介
  6. ×××病毒分析工具集之File Format Identifier v1.0
  7. Linux下VsFTP和ProFTP用户管理高级技巧 之一
  8. 在Vue 项目 webpack 打包中关于 背景图片的路径问题
  9. Mysql:命令选项、配置选项、(全局、会话)系统变量、状态变量:SQL模式
  10. 有关风向及风向处理的笔记
  11. 江湖传说——阿里巴巴土话102句完整版
  12. 水位传感器的python代码_关于水的作文
  13. 楪祈机器人_饥荒联机版罪恶王冠楪祈MOD下载_饥荒楪祈人物MOD下载_玩游戏网
  14. OFDM载波间隔_OFDM之频域
  15. 深度解读Swarm/BZZ项目的风险与创新
  16. 阿里巴巴重要开源项目汇总(资料参考)
  17. Ctrl+Z的相反快捷键(附最全AndroidStudio常用快捷键)
  18. 什么样的面试更有效?
  19. 全栈式PHP集成环境-laragon(二) 配置、使用
  20. 搭建vmware虚拟机,搭建docker环境

热门文章

  1. kotlin(java) 文件压缩
  2. 打开计算机页面只有上面一半,我电脑打开网页总是打开一半,不知道是为什么,请高手指教,谢谢!...
  3. unable to resolve module
  4. 数据加密 RSA非对称加密篇
  5. 中国科学技术大学计算机研究生在哪个校区,中国科学技术大学有几个校区及校区地址 哪个校区最好...
  6. vue页面返回消息头获取_vue在响应头response中获取自定义headers操作
  7. 远程桌面用administrator登录的原因简介
  8. 【肥海豹】-网络安全等级保护(等保)-WINDOWS类服务器配置
  9. 三分钟教会你用Python爬取心仪小姐姐图片
  10. python制作小帆船保姆级教学