这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
Python爬虫个人记录(一)豆瓣250
Python爬虫个人记录(二)fishc爬虫

一、目的分析

获取煎蛋妹子图并下载
http://jandan.net/ooxx

大概就是这么个样子了^_^

心动了吗,那就行动吧。

二、步骤分析

1、访问http://jandan.net/ooxx

获得当前妹子图的页码

2、 获得http://jandan.net/ooxx前十页地址

3、分析前十页地址并获得图片真实下载地址

4、下载前十页的妹子图并保存

三、scrapy shell 模拟分析

1、获取页码

cmd ->scrapy shell
>>> fetch('http://jiandan.net/ooxx/')
2017-08-13 15:22:52 [scrapy.core.engine] INFO: Spider opened
2017-08-13 15:22:52 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://jandan.net/ooxx> (referer: None)
>>> response.xpath('//*[@id="comments"]/div[2]/div/a[1]/text()').extract()
['\r\n 252 ']
>>>

关于获取xpath方法可参照豆瓣记录(一)fishc记录(二)

2、合成地址访问,并分析出妹子图片下载地址(页面一为例)

>>> fetch('http://jandan.net/ooxx/page-252#comments')
2017-08-13 15:33:08 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://jandan.net/ooxx/page-252#comments> (referer: None)
>>> response.xpath('//*[@id="comment-3533810"]/div/div/div[2]/p/img').extract()
['<img src="//wx4.sinaimg.cn/mw600/005Dt8Kogy1fidom0zig8j30fx0ku0ww.jpg">']
>>> response.xpath('//*[@id="comment-3533810"]/div/div/div[2]/p/img/@src').extract()
['//wx4.sinaimg.cn/mw600/005Dt8Kogy1fidom0zig8j30fx0ku0ww.jpg']
>>>

获得图片下载地址成功

四、Python代码书写

(细节参考记录一、二)

直接上源码了,有一些注释,可以自行参考阅读

import urllib.request
import os
from lxml import etree #打开一个网页操作
def url_open(url):
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3226.400 QQBrowser/9.6.11681.400')
response = urllib.request.urlopen(url)
html = response.read() return html def find_data(url = '', xrule = ''):
result_data = [] html = url_open(url)
selector = etree.HTML(html)
result_data = selector.xpath(xrule) return result_data #将图片保存在本地
def save(folder, image_addrs): for each in image_addrs:
file_name = each.split('/')[-1]
with open(file_name, 'wb') as f:
img = url_open(each)
f.write(img) def test1(): url = 'http://jiandan.net/ooxx/'
page = 5 #获取的图片页数 #获取最新妹子页码
xrule = '//*[@id="comments"]/div[2]/div/a[1]/text()'
page_num = find_data(url, xrule)
page_num = int(page_num[0])
#print(page_num) #成功
#获取下载链接
list_1 = []
xrule_1 = '//li[contains(@id,"comment-")]/div/div/div[2]/p/img/@src'
for i in range(page):
page_url = 'http://jiandan.net/ooxx/page-' + str(page_num - i) + '#comments'
result = find_data(page_url, xrule_1)
for each in result:
each = 'http:' + each
list_1.append(each)
#print(each)
#下载并保存图片
folder = 'OOXX'
os.mkdir(folder)
os.chdir(folder)
save(folder, list_1) if __name__ == '__main__':
test1()

结果展示

五、总结

有福利才有学习的动力,努力学习为了更多的福利^_^

顺便打波小广告:I love fishc.com
这篇教程参考小甲鱼零基础入门学习python
欢迎来鱼c论坛学习^_^

Python爬虫个人记录(三)爬取妹子图的更多相关文章

  1. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  2. Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  3. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  4. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  5. Python爬虫:为什么你爬取不到网页数据

    前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...

  6. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  7. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  8. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  9. python爬虫学习01--电子书爬取

    python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...

随机推荐

  1. Java并发编程原理与实战三十一:Future&FutureTask 浅析

    一.Futrue模式有什么用?------>正所谓技术来源与生活,这里举个栗子.在家里,我们都有煮菜的经验.(如果没有的话,你们还怎样来泡女朋友呢?你懂得).现在女票要你煮四菜一汤,这汤是鸡汤, ...

  2. AngularJS 、Backbone.js 和 Ember.js 的比较

    1 介绍 我们准备在这篇文章中比较三款流行于Web的“模型-视图-*”框架:AngularJS.Backbone和Ember.为你的项目选择正确的框架能够对你及时交付项目的能力和在以后维护你自己代码的 ...

  3. elasticsearch-head插件安装说明

    下载及安装readme https://github.com/mobz/elasticsearch-head 安装: npm install npm run start 访问:http://local ...

  4. 如何在python的字符串中输入纯粹的{}

    python的format函数通过{}来格式化字符串 >>> a='{0}'.format(123) >>> a ' 如果需要在文本中包含{}字符,这样使用就会报错 ...

  5. 钉钉头像大小设置 阿里cdn尺寸截取参数设置

    默认api的接口返回的avatar字段,是原始图片大小字段,尺寸和空间都是原始大小,如果想节省流量或统一尺寸,可以用阿里cdn自带的尺寸截取功能, 比如钉钉头像 avatar字段 返回值为原始大小ht ...

  6. 单调栈(G - Sliding Window POJ - 2823 )

    题目链接:https://cn.vjudge.net/contest/276251#problem/G 题目大意:给你n和m,然后问你对于(m,n)这中间的每一个数,(i-m+1,i)这个区间的最小值 ...

  7. 【bzoj题解】2186 莎拉公主的困惑

    题目传送门. 题意:求\([1,n!]\)中与\(m!\)互质的数的个数,对质数\(R\)取模,\(n\geq m\). 答案应该等于\(\frac{n!}{m!}\phi(m!)=\frac{n!} ...

  8. redis安装(linux)

    一.redis安装步骤 1.yum install gcc  如果你机器已经安装了编译环境请忽略,否则在使用make编译源码时会报错. 报错信息:make: *** [adlist.o]  2.使用w ...

  9. aarch64_n2

    nodejs-is-dotfile-1.0.2-2.fc26.noarch.rpm 2017-02-12 00:27 9.5K fedora Mirroring Project nodejs-is-e ...

  10. aarch64_g1

    GAPDoc-1.5.1-12.fc26.noarch.rpm 2017-02-14 07:37 1.0M fedora Mirroring Project GAPDoc-latex-1.5.1-12 ...