【Python】Scrapy抓取多玩Gif图片
文件准备:
- 安装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
![](/assets/blank.gif)
【Python】Scrapy抓取多玩Gif图片相关推荐
- python scrapy 抓取脚本之家文章(scrapy 入门使用简介)
老早之前就听说过python的scrapy.这是一个分布式爬虫的框架,可以让你轻松写出高性能的分布式异步爬虫.使用框架的最大好处当然就是不同重复造轮子了,因为有很多东西框架当中都有了,直接拿过来使用就 ...
- 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
作者 | 旧时晚风拂晓城 编辑 | JackTian 来源 | 杰哥的IT之旅(ID:Jake_Internet) 原文链接:https://blog.csdn.net/fyfugoyfa ...
- 用python画爱心动图_编写Python爬虫抓取暴走漫画上gif图片的实例分享
本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...
- gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享
本文要介绍的爬虫是抓取暴走漫画上的GIF趣图,方便离线观看.爬虫用的是python3.3开发的,主要用到了urllib.request和BeautifulSoup模块. urllib模块提供了从万维网 ...
- php爬取房源,(python) scrapy抓取房天下房源信息
一.前言 研究房价走势和房源信息. 二.知识准备 1.python相关知识储备 2.对Scrapy框架有基本的了解,知道其运行流程和逻辑 3.Xpath和CSS选择器相关知识(本文只使用Xpath,要 ...
- python爬虫框架:scrapy抓取企业名录
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...
- Python进阶之Scrapy抓取苏宁图书数据
Python进阶之Scrapy抓取苏宁图书数据 1. 需求 2. 代码示例: 创建项目 start.py settings.py iterms.py snb.py pipelines.py 3. 注意 ...
- python学习-抓取知乎图片
python学习-抓取知乎图片 #!/bin/usr/env python3__author__ = 'nxz'""" 抓取知乎图片 webdriver Chromedr ...
- python美女源代码_单身程序员,每晚用python抓取百万张美女图片,连女友都不想找了...
每当夜深人静时,这位长期单身的程序员就会起床开电脑,然后用python抓取百万张美女图片,存进U盘,目的目前还不知道,但技术是万能的,这样一来,可能连找女朋友的钱都省了. 其实,还有更好看的! 而且还 ...
- Python爬虫抓取指定网页图片代码实例
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 想 ...
最新文章
- 精通python-精通Python设计模式
- 河南省第十届大学生程序设计竞赛 A,B,C,D,F,G,H 题解
- GDCM:将gz文件转dcm文件测试程序
- jQuery Validate 合法性,限制性校验
- 多年前那些优秀的工程师,后来都去哪儿了?
- 只要加一行,让 IE 五倍速执行 JavaScript
- HDOJ 2955 Robberies
- HTML精仿ios相册,iOS开发-仿微信相册选择Demo
- STL -- string类字符串
- 中专计算机应用专业简历模板,2016计算机应用专业个人简历模板
- word闪退 用endnote_endnote x9 word 中插入参考文献时闪退崩溃
- PC端浏览器兼容测试总结
- YAMLException: bad indentation of a mapping entry at line 解决
- Oracle 12cR1 RAC 在VMware Workstation上安装(上)—OS环境配置
- Mybatis—— 使用注解实现一对一复杂关系映射及延迟加载
- Git remote: error: this exceeds file size limit of 100.0 MB
- Json的FastJson与Jackson
- c语言之文件存储通版讯录
- P2212 [USACO14MAR]Watering the Fields S(Prim)
- Java基础知识记忆(面试准备)
热门文章
- GIS应用技巧之定义图框样式
- 第十届泰迪杯数据挖掘挑战赛A题害虫识别YOLOv5模型代码(已跑通,原创作品,持续更新)
- 初学C语言 输出图形
- es浏览器连接电脑找不到服务器,es文件浏览器,详细教您es文件浏览器怎么连接电脑...
- matlab斑点噪声算法,粒子滤波算法中的噪声问题
- a7100换电池_如何评价三星galaxy A7100(2016版)?
- ubuntu 14安装droidcam调用手机摄像头
- jsp mysql超市管理_基于WEB的小型超市管理系统的设计与实现(JSP,MySQL)
- win7下安装vc6.0(sp5,sp6补丁安装)
- BP神经网络算法推导过程