Python爬虫个人记录(三)爬取妹子图
这此教程可能会比较简洁,具体细节可参考我的第一篇教程:
Python爬虫个人记录(一)豆瓣250
Python爬虫个人记录(二)fishc爬虫
一、目的分析
获取煎蛋妹子图并下载
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爬虫个人记录(三)爬取妹子图的更多相关文章
- Python 爬虫入门(二)——爬取妹子图
Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...
- Python 爬虫入门之爬取妹子图
Python 爬虫入门之爬取妹子图 来源:李英杰 链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...
- 转 Python爬虫实战一之爬取糗事百科段子
静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...
- python爬虫:了解JS加密爬取网易云音乐
python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...
- Python爬虫:为什么你爬取不到网页数据
前言: 之前小编写了一篇关于爬虫为什么爬取不到数据文章(文章链接为:Python爬虫经常爬不到数据,或许你可以看一下小编的这篇文章), 但是当时小编也是胡乱编写的,其实里面有很多问题的,现在小编重新发 ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- Python爬虫实战一之爬取糗事百科段子
大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...
- 转 Python爬虫实战二之爬取百度贴吧帖子
静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...
- python爬虫学习01--电子书爬取
python爬虫学习01--电子书爬取 1.获取网页信息 import requests #导入requests库 ''' 获取网页信息 ''' if __name__ == '__main__': ...
随机推荐
- Redis学习五:Redis的持久化-RDB
RDB(Redis DataBase) 一.是什么 1.概念:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里 2.执行方式: R ...
- Spyder简述
导言 想打造轮子, 就必须要有一套完善的造轮子的工具. 我在jupyter+sciTE的组合里转来转去, 最后还是打算放弃这个组合, 因为离开了自动完成/调用提示/随时随地的访问文档帮助, 前行之路太 ...
- 20155302 2016-2017-2 《Java程序设计》第七周学习总结
20155302 2016-2017-2 <Java程序设计>第七周学习总结 教材学习内容总结 Lambda表达式的优点:更加紧凑的代码.修改方法的能力.更好地支持多核处理 "L ...
- 【转】线程间操作无效: 从不是创建控件“textBox2” 的线程访问它。
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- HDU 4720 Naive and Silly Muggles 平面几何
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4720 解题报告:给出一个三角形的三个顶点坐标,要求用一个最小的圆将这个三个点都包含在内,另外输入一个点 ...
- EOJ Monthly 2019.2 (based on February Selection) F.方差
题目链接: https://acm.ecnu.edu.cn/contest/140/problem/F/ 题目: 思路: 因为方差是用来评估数据的离散程度的,因此最优的m个数一定是排序后连续的,所以我 ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- jenkins 入门教程(上)【转】
转自:https://www.cnblogs.com/yjmyzz/p/jenkins-tutorial-part-1.html jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更 ...
- plupload 上传组件的使用
在这之前在感谢园子好多大牛的文章,在这里就不列出来了. 进入正题. svn检索https://github.com/moxiecode/plupload 获取到代码,这篇文章使用的是v2.1.8 主要 ...
- IDL界面程序直接调用envi菜单对应功能
参考自http://blog.sina.com.cn/s/blog_764b1e9d010115qu.html 参考文章的方法是构建一个button控件,通过单击实现,这种方法比较复杂,不是我们经常能 ...