最近有个需求:下载https://mm.meiji2.com/网站的图片。

所以简单研究了一下爬虫。

在此整理一下结果,一为自己记录,二给后人一些方向。

爬取结果如图:

 

整体研究周期 2-3 天,看完之后,在加上看的时候或多或少也会自己搜到一些其他知识。

顺着看下来,应该会对爬虫技术有一个初步的认识。

大致的步骤:

分析页面,编写爬虫规则

下载图片,如果有分页,则分页

多页爬取,并且分目录保存到本地,多级存储。

应对反爬虫

以上就是学习的时候,看到的一些资料。

然后贴出一篇我自己写的,爬取的时候分了三级目录,并且,最后一级还有 下一页。

import scrapy

from znns.items import ZnnsItem

class NvshenSpider(scrapy.Spider):

name = 'znns'

allowed_domains = ['']

start_urls = ['https://mm.meiji2.com/']

headers = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',

}

# 排行榜循环

def parse(self, response):

exp = u'//div[@class="pagesYY"]//a[text()="下一页"]/@href'  # 下一页的地址

_next = response.xpath(exp).extract_first()

yield scrapy.Request(response.urljoin(_next), callback=self.parse, dont_filter=True)

for p in response.xpath('//li[@class="rankli"]//div[@class="rankli_imgdiv"]//a/@href').extract():  # 某一个妹子简介详情页

item_page = "https://mm.meiji2.com/" + p + "album/"  # 拼接 全部相册页面

yield scrapy.Request(item_page, callback=self.parse_item, dont_filter=True)

# 单个介绍详情页

def parse_item(self, response):

item = ZnnsItem()

# 某个人的名字,也就是一级文件夹

item['name'] = response.xpath('//div[@id="post"]//div[@id="map"]//div[@class="browse"]/a[2]/@title').extract()[

0].strip()

exp = '//li[@class="igalleryli"]//div[@class="igalleryli_div"]//a/@href'

for p in response.xpath(exp).extract():  # 遍历妹子全部相册

item_page = "https://mm.meiji2.com/" + p  # 拼接图片的详情页

yield scrapy.Request(item_page, meta={'item': item}, callback=self.parse_item_details, dont_filter=True)

# 图片主页,开始抓取

def parse_item_details(self, response):

item = response.meta['item']

item['image_urls'] = response.xpath('//ul[@id="hgallery"]//img/@src').extract()  # 图片链接

item['albumname'] = response.xpath('//h1[@id="htilte"]/text()').extract()[0].strip()  # 二级文件夹

yield item

new_url = response.xpath('//div[@id="pages"]//a[text()="下一页"]/@href').extract_first()  # 翻页

new_url = "https://mm.meiji2.com/" + new_url

  

Python 爬取美女图片,分目录多级存储的更多相关文章

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

    有半个月没有更新了,最近确实有点忙.先是华为的比赛,接着实验室又有项目,然后又学习了一些新的知识,所以没有更新文章.为了表达我的歉意,我给大家来一波福利... 今天咱们说的是爬虫框架.之前我使用pyt ...

  2. Scrapy爬取美女图片第三集 代理ip(上) (原创)

    首先说一声,让大家久等了.本来打算那天进行更新的,可是一细想,也只有我这样的单身狗还在做科研,大家可能没心思看更新的文章,所以就拖到了今天.不过忙了521,522这一天半,我把数据库也添加进来了,修复 ...

  3. Scrapy爬取美女图片第四集 突破反爬虫(上)

     本周又和大家见面了,首先说一下我最近正在做和将要做的一些事情.(我的新书<Python爬虫开发与项目实战>出版了,大家可以看一下样章) 技术方面的事情:本次端午假期没有休息,正在使用fl ...

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

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

  5. android高仿抖音、点餐界面、天气项目、自定义view指示、爬取美女图片等源码

    Android精选源码 一个爬取美女图片的app Android高仿抖音 android一个可以上拉下滑的Ui效果 android用shape方式实现样式源码 一款Android上的新浪微博第三方轻量 ...

  6. Scrapy爬取美女图片第三集 代理ip(下)

    这是我的公众号获取原创保护的首篇文章,原创的肯定将支持我继续前行.现在写这篇文章的时间是晚上11:30,写完就回寝室休息了,希望更多的朋友与我一起同行(当然需要一个善良的妹子的救济).(我的新书< ...

  7. Python爬取谷歌街景图片

    最近有个需求是要爬取街景图片,国内厂商百度高德和腾讯地图都没有开放接口,查询资料得知谷歌地图开放街景api 谷歌捷径申请key地址:https://developers.google.com/maps ...

  8. 利用Python爬取网页图片

    最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 我们这里以sogou作为爬取的对象. 首先我们进入搜狗图片 ...

  9. 福利贴——爬取美女图片的Java爬虫小程序代码

    自己做的一个Java爬虫小程序 废话不多说.先上图. 目录命名是用标签缩写,假设大家看得不顺眼能够等完成下载后手动改一下,比方像有强迫症的我一样... 这是挂了一个晚上下载的总大小,只是还有非常多由于 ...

随机推荐

  1. 房上的猫:java基础知识部分知识点

    1.Java常见的注释有哪些,语法是怎样的? 1)单行注释用//表示,编译器看到//会忽略该行//后的所文本  2)多行注释/* */表示,编译器看到/*时会搜索接下来的*/,忽略掉/* */之间的文 ...

  2. 深入了解CSS字体度量,行高和vertical-align

    line-height和vertical-align在CSS中是两个简单的属性.如此简单,大多数人都相信自己已经完全理解它们是如何工作的以及如何使用它们.但事实上并不如此.他们其实很复杂,也是CSS中 ...

  3. Java的按位操作符

    本文参考:Java的位操作符 Java的位操作符用来操作整数基本数据类型中的单个"比特"(bit),即代进制位.而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作. ...

  4. #多个关联的python程序在linux后台运行

    由于在shell脚本中直接使用&符号和python程序有冲突,不能正常的进入后台执行python(多番尝试python xxx.py &,后面的&总是不能正常识别.系统cent ...

  5. C# 读取系统日志

    .NET框架类库提供了EventLog类和EventLogEntry类与系统日志进行交互二者属于System.Diagnostics命名空间 EventLog 类的属性主要有 Entris返回一个Ev ...

  6. ionic3 笔记

    ionic3的常用命令: //新建项目.ionic start ionic_tab tabs // 新建页面ionic g page NewPage// 查看usb链接的手机adb devices c ...

  7. python之list

    1.python列表 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推 序列都可以进行的操作包括索引,切片,加,乘, ...

  8. JAVA读取和写入properties文件

    1.读取 Properties prop = new Properties(); try { //这个getResourceAsStream方法就是把文件转为inputStream的方式 prop.l ...

  9. JSP中的“小饼干”Cookie,用来存储数组的方式(下方已String类型的数组为例:)

    1.Cookie常用方法中,存储数据的方式: Cookie cookie = new Cookie("key","Value"); response.addCo ...

  10. WebGL多模型光照综合实例

      原文地址:WebGL多模型光照综合实例   WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别 ...