文件准备:

  • 安装python2.7.5
  • 安装pywin32
  • 安装py-setuptool
  • 要用到的文件打包下载:点击下载

安装Scrapy:

  • 配置环境变量:将【C:\Python27\】和【C:\Python27\Scripts\】加到系统变量Path中
  • 安装pip:打开CMD,执行   easy_install pip
  • 安装Scrapy:打开CMD,执行 pip install Scrapy

新建工程:

  • 在CMD中输入: scrapy  startproject  gif     新建一个名为gif的工程文件夹
  • spiders:       存放自己写的 爬虫规则文件
  • items.py:      自定义获取数据的结构
  • pipelines.py:自定义处理获取到的item结构数据
  • settings.py:  设置和启动pipelines

Scrapy工作流程原理分析:

  • http://www.ituring.com.cn/article/114408

自定义获取数据的结构:(修改items.py文件)

#-*- coding: utf-8 -*-
#coding:UTF-8import scrapy#自定义要获取的数据Item的结构
class GifItem(scrapy.Item):#自定义数据item的结构,这里的item只有gif_url一项#要获取更多的数据,可以增加item的项gif_url = scrapy.Field()pass

编写自己爬虫文件:(在spiders里新建一个gif.py的文件)

#-*- coding: utf-8 -*-
#coding:UTF-8
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from gif.items import GifItemclass GifSpider(CrawlSpider):#爬虫名字,唯一,用于区分以后新建的爬虫name = "gif"#可选,定义爬取区域,超出区域的链接不爬取allowed_domains = ["duowan.com"]#定义开始爬取的页面Astart_urls=["http://tu.duowan.com/scroll/100103.html"]#定义规则,在页面A中爬取符合规则的链接,并调用函数处理rules = [Rule(SgmlLinkExtractor(allow=('/scroll/\d*/\d*.html')),  callback = 'parse_gif', follow=True),Rule(SgmlLinkExtractor(allow=('/scroll/\d*.html')),  callback = 'parse_gif', follow=True),]def parse_gif(self, response):#定义获取数据的结构urlItem = GifItem()#注意item是每个页面的数据集合,每个页面有一个item,搜集整理好交给Pipeline处理urlItem['gif_url'] = response.selector.xpath('//*[@id="picture-pageshow"]/div[1]/div[@class="pic-box"]/a/img/@src').extract()yield urlItem

编写Pipeline.py处理获取到的item数据:

#-*- coding: utf-8 -*-
#coding:UTF-8
import urllib
import urllib2
import time
import os
import shutil
from scrapy.exceptions import DropItem
import pymongo#Pineline用于处理获取到的item数据
class GifPipeline(object):#启动爬虫时执行,新建一个名为gaoxiao_gif的文件#创建一个名为gif_url的mongo数据库, 并创建一个集合my_collection#创建一个名为gif_url的txt文件def __init__(self):conn = pymongo.Connection('localhost', 27017)db = conn['gif_url']self.collection = db['gif_collection']self.f = open('url_gif.txt', 'wb')if os.path.exists('gaoxiao_gif'):  shutil.rmtree("gaoxiao_gif")  else:  os.mkdir("gaoxiao_gif")#爬虫启动时调用,处理获取到的item数据,注意item是每一个页面的数据集合def process_item(self, item, spider):#去除没用的数据if item['gif_url']:#遍历每个页面item集合里面的所有url#字符串判断,过滤所有.jpg和.png文件,只下载gif文件#将url插入mongo数据库#将url存放进txt,稍后可以用迅雷下载for i in item['gif_url']:if ".gif" in i:self.f.write(i)self.f.write('\r\n')gif_url=[{"url":i}]self.collection.insert(gif_url)now = time.localtime(time.time())fname = str(now)urllib.urlretrieve(i, 'gaoxiao_gif/%s.gif' %fname)else:raise DropItem(item)return item#爬虫关闭时调用def close_spider(self, spider):print("Done")

设置Setting.py文件启动Pipeline功能:

# -*- coding: utf-8 -*-BOT_NAME = 'gif'SPIDER_MODULES = ['gif.spiders']
NEWSPIDER_MODULE = 'gif.spiders'#启动对应的Pipeline,有多个Pipeline时,数字小的先执行
ITEM_PIPELINES={'gif.pipelines.GifPipeline': 1}

启动爬虫,下载gif

  • 打开CMD,CD到项目目录
  • 执行scrapy crawl  gif

【Python】Scrapy抓取多玩Gif图片相关推荐

  1. python scrapy 抓取脚本之家文章(scrapy 入门使用简介)

    老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...

  2. 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!

    作者 | 旧时晚风拂晓城       编辑 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 原文链接:https://blog.csdn.net/fyfugoyfa ...

  3. 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享

    本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...

  4. gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享

    本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...

  5. php爬取房源,(python) scrapy抓取房天下房源信息

    一.前言 研究房价走势和房源信息. 二.知识准备 1.python相关知识储备 2.对Scrapy框架有基本的了解,知道其运行流程和逻辑 3.Xpath和CSS选择器相关知识(本文只使用Xpath,要 ...

  6. python爬虫框架:scrapy抓取企业名录

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  7. Python进阶之Scrapy抓取苏宁图书数据

    Python进阶之Scrapy抓取苏宁图书数据 1. 需求 2. 代码示例: 创建项目 start.py settings.py iterms.py snb.py pipelines.py 3. 注意 ...

  8. python学习-抓取知乎图片

    python学习-抓取知乎图片 #!/bin/usr/env python3__author__ = 'nxz'""" 抓取知乎图片 webdriver Chromedr ...

  9. python美女源代码_单身程序员,每晚用python抓取百万张美女图片,连女友都不想找了...

    每当夜深人静时,这位长期单身的程序员就会起床开电脑,然后用python抓取百万张美女图片,存进U盘,目的目前还不知道,但技术是万能的,这样一来,可能连找女朋友的钱都省了. 其实,还有更好看的! 而且还 ...

  10. Python爬虫抓取指定网页图片代码实例

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 想 ...

最新文章

  1. 精通python-精通Python设计模式
  2. 河南省第十届大学生程序设计竞赛 A,B,C,D,F,G,H 题解
  3. GDCM:将gz文件转dcm文件测试程序
  4. jQuery Validate 合法性,限制性校验
  5. 多年前那些优秀的工程师,后来都去哪儿了?
  6. 只要加一行,让 IE 五倍速执行 JavaScript
  7. HDOJ 2955 Robberies
  8. HTML精仿ios相册,iOS开发-仿微信相册选择Demo
  9. STL -- string类字符串
  10. 中专计算机应用专业简历模板,2016计算机应用专业个人简历模板
  11. word闪退 用endnote_endnote x9 word 中插入参考文献时闪退崩溃
  12. PC端浏览器兼容测试总结
  13. YAMLException: bad indentation of a mapping entry at line 解决
  14. Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
  15. Mybatis—— 使用注解实现一对一复杂关系映射及延迟加载
  16. Git remote: error: this exceeds file size limit of 100.0 MB
  17. Json的FastJson与Jackson
  18. c语言之文件存储通版讯录
  19. P2212 [USACO14MAR]Watering the Fields S(Prim)
  20. Java基础知识记忆(面试准备)

热门文章

  1. GIS应用技巧之定义图框样式
  2. 第十届泰迪杯数据挖掘挑战赛A题害虫识别YOLOv5模型代码(已跑通,原创作品,持续更新)
  3. 初学C语言 输出图形
  4. es浏览器连接电脑找不到服务器,es文件浏览器,详细教您es文件浏览器怎么连接电脑...
  5. matlab斑点噪声算法,粒子滤波算法中的噪声问题
  6. a7100换电池_如何评价三星galaxy A7100(2016版)?
  7. ubuntu 14安装droidcam调用手机摄像头
  8. jsp mysql超市管理_基于WEB的小型超市管理系统的设计与实现(JSP,MySQL)
  9. win7下安装vc6.0(sp5,sp6补丁安装)
  10. BP神经网络算法推导过程