准备工作:

1.创建scrapy项目

cmd命令行(若想创建至桌面,可先 cd desktop) 输入 scrapy startproject +项目名 ,enter根据命令行显示示例依次操作即可

用pycharm打开创建的文件夹,并创建debug.py文件,方便断点调试程序

debug文件内代码

#coding:utf-8
from scrapy.cmdline import execute
execute(['scrapy','crawl','爬虫名'])

代码块:

1.主要代码

# -*- coding: utf-8 -*-
import scrapy
# 引入数据模型类
from ..items import ImgItemclass SucaiSpider(scrapy.Spider):name = 'sucai'allowed_domains = ['sc.chinaz.com']start_urls = ['http://sc.chinaz.com//']def parse(self, response):# 200 OK 请求成功# 302 重定向# 404 url地址不存在# 403 没有权限访问,服务器拒绝连接# 5XX 服务器的错误# 找到图标的链接tb_href = response.xpath('//div[@class="nav"]/ul/li[@class="nos"]/a[3]/@href').extract_first('')# 拼接完整的urltb_url = 'http://sc.chinaz.com'+tb_href# 发送一个请求# 1.url请求的地址 2.callback 回调函数 默认调用parse()yield scrapy.Request(url=tb_url,callback=self.parse_list)# 解析所有图标列表def parse_list(self,response):# 根据xpath找到所有图标详情页的地址detail_links = response.xpath('//ul[@class="pngblock imgload"]/li/p/a/@href').extract()# for循环遍历列表,取出每一个图片的详细地址,发起请求for link in detail_links:yield scrapy.Request(url=link,# 请求成功了,调用parse_detail解析详情callback=self.parse_detail,# 用于请求数据时,携带一些额外的参数# meta={'hello':'world'})# 找到下一页的链接next_href = response.xpath('//a[@class="nextpage"]/@href').extract_first('')# 判断是否有下一页if next_href:# 拼接下一页的地址next_url = 'http://sc.chinaz.com/tubiao/'+next_hrefyield scrapy.Request(url=next_url,callback=self.parse_list)# 解析详情页中的每一张图片地址def parse_detail(self,response):# 解析图片分类名称categray = response.xpath('//h2/a/text()').extract_first('')# 解析图片地址imgs_src = response.xpath('//div[@class="png_pic"]/img/@src').extract()# for循环遍历所有图片的详细地址for src in imgs_src:# 创建数据模型对象img = ImgItem()# src图片下载地址必须放在列表中img['src'] = [src]# 图片分类img['categray'] = categrayyield img

2. 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
# 引入scrapy自带的图片下载类
from scrapy.pipelines.images import ImagesPipeline
# 引入scrapy
import scrapyclass SucaiSpiderPipeline(object):def process_item(self, item, spider):return item# 1.下载图片  2.指定图片存放目录
# 继承于scrapy自带的图片下载类
class MyImagePipeline(ImagesPipeline):# 获取图片下载请求的函数def get_media_requests(self, item, info):# 1.取出图片下载的url地址url = item['src'][0]# 2.根据url地址创建请求对象request = scrapy.Request(url=url,# 利用meta将item传递到file_path函数中meta={"item":item})# 最终返回一个下载图片的请求对象的列表return [request]# 重写file_path指定图片存放路径def file_path(self, request, response=None, info=None):# 根据key取出meta中的item,这个item中包含的就是下载图片的数据item = request.meta['item']# 取出分类categray = item['categray']# 取出图片下载地址src = item['src'][0]# 分割获取图片名称name = src.split('/')[-1]# 最终只需要将图片的存放路径和图片的名称返回即可return '%s/%s'%(categray, name)

3. 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 SucaiSpiderItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()pass# 新建图片的数据模型
class ImgItem(scrapy.Item):# 图标的下载地址src = scrapy.Field()# 图标的分类categray = scrapy.Field()

settings.py 自己做相应配置即可

站长素材网 图标信息爬取(scrapy)相关推荐

  1. 采用scrapy对秀动网演出信息爬取

    爬取结果 mongodb数据库: spider文件 分析秀动网站页面的布局,准备爬取我们需要的信息. 没有粘贴代码,简单讲解一下爬取上海所有的演出信息. parse方法里面定义 页面演出信息的列表: ...

  2. python爬取去哪儿网_python网络爬虫(12)去哪网酒店信息爬取

    目的意义 爬取某地的酒店价格信息,示例使用selenium在Firefox中的使用. 来源 少部分来源于书.python爬虫开发与项目实战 构造 本次使用简易的方案,模拟浏览器访问,然后输入字段,查找 ...

  3. python网易云热歌榜歌曲信息爬取(iframe框架内数据爬取,src为空)

    为一线医护人员加油! 为武汉加油! 为中国加油! 为世界加油! 此爬虫是本人参考了了一位前辈的文章,并修改和优化了代码: 1.改为python3环境: 2.优化了抓取的歌曲时长中带一长串小数的问题: ...

  4. 网易云音乐信息爬取(存储为 csv文件)喜马拉雅音乐爬取

    1. 网易云音乐爬取 分析 源代码 爬取结果, (可使用Excel 表格打开) 2. 喜马拉雅音乐爬取 分析 源代码 爬取结果 获取网易云音乐歌手信息 后续会做一个 网易云音乐爬取 + Tkinter ...

  5. 【2020-10-27】 scrapy爬虫之猎聘招聘信息爬取

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! scrapy爬虫之猎聘招聘信息爬取 1.项目场景 目标网址:https://www.liepin.com/zhao ...

  6. Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取

    一.创建Scrapy项目 在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫 scrapy startproject JD_Goodscd JD_Goodsscrapy genspider ...

  7. 基于scrapy下的租房信息爬取与数据展示工具的设计与实现

    环境:python 3.6.0 Anaconda custom 64bit 4.3.0 Pycharm x64 专业版 2018.1.2 Web strom x64 专业版 2018.1.3 scra ...

  8. 知网关键词搜索爬取摘要信息

    知网关键词搜索爬取摘要信息 由于技术不成熟,代码冗余度较高.同时代码也可能会存在错误,也请各路高人指正. 本篇文章应用范围为期刊搜索(不包括外文文献),其他内容,没有进行测试!!! 本次爬虫所采用到的 ...

  9. scrapy 斗鱼 主播信息爬取

    原文链接: scrapy 斗鱼 主播信息爬取 上一篇: scrapy 妹子图网站 全站图片爬取 下一篇: TensorFlow models 的slim 模块 使用预训练模型进行识别 api http ...

最新文章

  1. java使用eclipse打jar包_Eclipse对Java项目打Jar包
  2. 在Ubuntu上编译libusb
  3. 【ClickHouse 技术系列】- 在 ClickHouse 中处理实时更新
  4. JSP和Servlet相同点和不同点?
  5. Linux装好MATLAB无法启动的解决办法
  6. CentOS7单独安装Apache Bench压力测试工具
  7. 解决jquery下checked取值问题...
  8. 梦幻群侠传5帮派修炼_梦幻群侠传5唯美版
  9. atitit.编程语言的未来趋势与进化结果
  10. 小米路由器3潘多拉固件刷机教程
  11. 【电机控制入门】——电机控制书籍推荐
  12. Python鸡兔同笼
  13. 如何正确使用手机拍摄证件照
  14. python 实现图片批量加入水印!
  15. 趣头条爬虫(以财经频道为例)
  16. unity中计算向量的模长和归一化向量
  17. Go程序当父进程被kill,子进程也自动退出的问题记录
  18. 对数坐标图python怎么画_python绘制半对数坐标
  19. 重构不是阳春白雪的高端玩意,而是码农编程利器
  20. ORA-16053: DB_UNIQUE_NAME win12cbak is not in the Data Guard Configuration

热门文章

  1. ADAMS旋转运动副的添加以及注意事项
  2. 【DFT】安装octopus
  3. 用html写一个简单课表
  4. 把Mitre SFR 1.4.2源码打包成MFC风格的exe
  5. c语言无符号整型越界,整型输出越界问题
  6. 前端面试之移动端适配篇(转载)
  7. 轻松高效搭建可视化数据网站
  8. 最大流算法之一——EK算法
  9. two-pointer双指针法
  10. 5GS 协议栈 — PFCP 协议 — FAR 转发操作规则