pythonScrapy批量采集妹子图网的图片

这部分相当有用,咱们不多说,目前是2016.6.22日亲测可用.环境方面是linux_ubuntu_15.04python_scrapy的环境搭建有问题请看之前的scrapy笔记

代码在:githubhttps://github/luyishisi/WebCrawlers/tree/master/scrapy_code/meizitu

先上最终截图,有动力好好学习了没?

0.创建项目

Python

1.修改item.py

importscrapyclassMeizituItem(scrapy.Item):#definethefieldsforyouritemherelike:#name=scrapy.Field()url=scrapy.Field()name=scrapy.Field()tags=scrapy.Field()image_urls=scrapy.Field()images=scrapy.Field()

2.修改pipelines.py

123456789101112131415161718192021222324252627282930313233343536373839404142

#-*-coding:utf-8-*-#图片下载部分(自动增量)importrequestsfrommeizituimportsettingsimportos#图片下载类classImageDownloadPipeline(object):defprocess_item(self,item,spider):if'image_urls'initem:#如果‘图片地址’在项目中images=[]#定义图片空集dir_path='%s/%s'%(settings.IMAGES_STORE,spider.name)#建立目录名字和项目名称一致ifnotos.path.exists(dir_path):os.makedirs(dir_path)#根据item字典进行查询forimage_urlinitem['image_urls']:us=image_url.split('/')[3:]image_file_name='_'.join(us)file_path='%s/%s'%(dir_path,image_file_name)images.append(file_path)#如果这个文件存在则跳过ifos.path.exists(file_path):continue#进行图片文件写入,wb模式打开文件,然后requests.get获取图片流,withopen(file_path,'wb')ashandle:response=requests.get(image_url,stream=True)forblockinresponse.iter_content(1024):#获取的流如果有不存在的,则使用break结束,如果没有一次结束则进行写入ifnotblock:breakhandle.write(block)item['images']=images#即使注释了也一样效果,不知道为何returnitem

3.修改settings.py

#-*-coding:utf-8-*-BOT_NAME='meizitu'SPIDER_MODULES=['meizitu.spiders']NEWSPIDER_MODULE='meizitu.spiders'#载入ImageDownLoadPipeline类ITEM_PIPELINES={'meizitu.pipelines.ImageDownloadPipeline':1}#图片储存IMAGES_STORE='.'

4.建立spiders/meizi.py

注意这里名字不可以和项目文件夹的名字一样就是说不可以是meizitu。否则会报错

原scrapyImportError:Nomodulenameditems

ImportError:Nomodulenameditems

https://groups.google/forum/#!msg/scrapy-users/aYrpirKBK8Q/i1Su6UJbwjEJ

spiders目录中的.py文件不能和项目名同名。

1234567891011121314151617181920212223242526272829303132333435363738394041424344

#-*-coding:utf-8-*-importscrapyfromscrapy.selectorimportSelector#ItemLoaders提供了一种便捷的方式填充抓取到的:Itemsfromscrapy.contrib.loaderimportItemLoader,Identityfrommeizitu.itemsimportMeizituItemclassMeiziSpider(scrapy.Spider):name="meizi"allowed_domains=["meizitu"]start_urls=('http://meizitu/',)defparse(self,response):#sel是页面源代码,载入scrapy.selectorsel=Selector(response)#每个连接,用@href属性forlinkinsel.xpath('//h2/a/@href').extract():#请求=Request(连接,parese_item)request=scrapy.Request(link,callback=self.parse_item)yieldrequest#返回请求#获取页码集合pages=sel.xpath('//*[@id="wp_page_numbers"]/ul/li/a/@href').extract()print('pages:%s'%pages)#打印页码iflen(pages)>2:#如果页码集合>2page_link=pages[-2]#图片连接=读取页码集合的倒数第二个页码page_link=page_link.replace('/a/','')#图片连接=page_link(a替换成空)request=scrapy.Request('http://meizitu/a/%s'%page_link,callback=self.parse)yieldrequest#返回请求defparse_item(self,response):#l=用ItemLoader载入MeizituItem()l=ItemLoader(item=MeizituItem(),response=response)#名字l.add_xpath('name','//h2/a/text()')#标签l.add_xpath('tags',"//p[@id='maincontent']/p[@class='postmetaclearfix']/p[@class='metaRight']/p")#图片连接l.add_xpath('image_urls',"//p[@id='picture']/p/img/@src",Identity())#urll.add_value('url',response.url)returnl.load_item()

5.运行

6.检查效果

在执行命令的这个目录下就可以看到啦一个meizi的文件夹

python3爬妹子图_python3爬妹子图相关推荐

  1. python3爬取数据_python3爬取巨潮资讯网站年报数据

    python3爬取巨潮资讯网站年报数据 2018年年底巨潮资讯http://www.cninfo.com.cn改版了,之前实习生从网上找的脚本不能用了,因此重新修改了下爬取脚本.最初脚本的原链接忘了, ...

  2. python3实例车代码_python3 爬取汽车之家所有车型数据操作步骤(更新版)

    题记: 互联网上关于使用python3去爬取汽车之家的汽车数据(主要是汽车基本参数,配置参数,颜色参数,内饰参数)的教程已经非常多了,但大体的方案分两种: 1.解析出汽车之家某个车型的网页,然后正则表 ...

  3. python3爬取新浪微博_Python3爬取新浪微博头条

    #!/usr/bin/python #-*- coding: utf-8 -*- import re import sys import datetime from selenium import w ...

  4. python爬取王者_Python3爬取王者官方网站英雄数据

    爬取王者官方网站英雄数据 众所周知,王者荣耀已经成为众多人们喜爱的一款休闲娱乐手游,今天就利用python3 爬虫技术爬取官方网站上的几十个英雄的资料,包括官方给出的人物定位,英雄名称,技能名称,CD ...

  5. python爬取天气_python3爬取各类天气信息

    本来是想从网上找找有没有现成的爬取空气质量状况和天气情况的爬虫程序,结果找了一会儿感觉还是自己写一个吧. 主要是爬取北京包括北京周边省会城市的空气质量数据和天气数据. 过程中出现了一个错误:Unico ...

  6. pyspider实战:爬取想要的妹纸图(附源码)

    pyspider基本使用 爬取网页:https://www.99tu.com/sjbz/meinv/的妹纸图片及其标题 网页介绍 ​ "久久图库是一个崭新而夺目的图片视觉冲击平台.汇聚全球最 ...

  7. 利用Selenium爬取煎蛋网妹纸图原来是这么简单!!!

    上期说到,下期更新爬取煎蛋网妹纸的selenium版本,它来了!!! 获取页面url信息 获取图片url信息 永久性保存图片 注释: 想要获取GeckoDriver安装包的小伙伴,可以给博主留言或者搜 ...

  8. Python3.x整体知识介绍—撩妹大法

    Python3.x整体知识介绍-撩妹大法 说明:下面关于Python的介绍都是基于window系统 一.什么是Python 简介:Python是一种解释型,动态数据类型,面向对象高级设计语言:Pyth ...

  9. python3.6爬虫案例:爬取朝秀帮图片

    一.写在前面 之前写的两篇博客: python3.6爬虫案例:爬取百度歌单点击打开链接: python3.6爬虫案例:爬取顶点小说(爱看小说同学的福利)点击打开链接 第一个案例写了如何在百度音乐歌单中 ...

最新文章

  1. linux删除除某个文件外的其它文件,shell脚本:删除当前目录下除了某几个文件之外的其他文件...
  2. Windows Phone 8初学者开发—第19部分:设置RecordAudio.xaml页面
  3. C++中的空类与空结构体大小
  4. B样条数据点反求控制点绘制曲线(源码)
  5. 从零开始入门 K8s | 有状态应用编排 - StatefulSet
  6. Skin Demo优化之一
  7. 高等数理统计(part9)--C-R不等式
  8. stl优先队列定义可以吗_C ++ STL | 用户定义的优先级队列比较器
  9. 学术圈炸了!IEEE限制华为相关专家参与审稿:这操作毁尽三观
  10. 基于Android 9.0 电池温度异常提醒
  11. Java开发入门与实战!打印杨辉三角java代码
  12. Java基础概念干货(字符、标识符、数据类型... ...)
  13. 为什么我建议你这样实现MySQL分页
  14. Spark SQL External Data Sources JDBC官方实现写测试
  15. 2376. 统计特殊整数--(每日一难phase2--day4)
  16. 开发文件管理器-2015年9月19日
  17. idea 找出TODO
  18. 高校青年教师应该怎么提高收入
  19. 腾讯云图,让数据说话
  20. 如何设计签名 我的名字

热门文章

  1. php belongsto,php-Laravel:belongsTo()关系假定一对多关系,而不是一对一关系
  2. 企业邮箱发信数量是多少?
  3. 引擎磨合 (Break In) 的秘密
  4. 《Kotin 极简教程》第13章 使用 Kotlin 和 Anko 的Android 开发
  5. tekla中钢筋外形(TSM.RebarGeometry)
  6. C# 微信企业号--发送消息
  7. h5课件制作_PPT轻松转化H5,让“课件”动起来!
  8. MCV模型流程图整理
  9. 共轭梯度法确实存在数值精度的要求
  10. Python wmi Cookbook 中文翻译