python花瓣飘零_Python 爬虫: 抓取花瓣网图片
接触Python也好长时间了,一直没什么机会使用,没有机会那就自己创造机会!呐,就先从爬虫开始吧,抓点美女图片下来。
废话不多说了,讲讲我是怎么做的。
1. 分析网站
想要下载图片,只要知道图片的地址就可以了,So,现在的问题是如何找到这些图片的地址。
首先,直接访问http://huaban.com/favorite/beauty/会看到页面有20张所要抓取的图片还有一些其他干扰的图片信息(用户的头像、页面的一些图标之类的)。当点击一张美女图片时,页面会跳转到一个新的页面,在这个页面里,是之前那张图片更清晰版本,我们要下当然就要最好的了,就是点击完图片后新页面中那张图片啦。
下一步就是借助一些工具,如firefox的Firebug或者chrome的F12,分析网站。具体步骤有些繁琐,我就不细说了。分析结果是,首先,发送一个get请求,请求url为http://huaban.com/favorite/beauty/,得到一个html页面,在这个页面中
每张要找的图片对应一个字典,图片的url地址与"file"下的"key"有关,图片类型与"file"下的"type"有关,只要得到这两个值就可以下载到图片了。
在每次下拉刷新时,也是发送了一个get请求,在这个请求中有一个关键参数max,这个就是当前页面中最后一个图片的"pin_id",所以,需要抓取三个内容,分别是"pin_id","file"."key"和"file"."type"。
2. 编写爬虫
2.1 requests
使用Python自带的urllib和urllib2库几乎可以完成任何想要的http请求,但是就像requests所说的,Python’s standard urllib2 module provides most of the HTTP capabilities you need, but the API is thoroughly broken. 所以,我这里推荐使用的是requests库,中文文档在这里。
2.2 抓取主页面
直接发送get请求,得到html页面
req = requests.get(url = "http://huaban.com/favorite/beauty/")
htmlPage= req.content
2.3 处理html页面
分析html页面,得到图片的pin_id、url和图片类型。首先,用正则处理页面,得到页面中
prog = re.compile(r'app\.page\["pins"\].*')
appPins= prog.findall(htmlPage)
再将这一行中的数据提取出来,直接生成一个Python字典
null =None
result= eval(appPins[0][19:-1])
注:由于javascript中null在Python中为None,所以要让null=None,appPins中还有一个干扰用切片去掉。
之后就可以得到图片的信息,将这些信息以字典形式存入一个列表中
images =[]for i inresult:
info={}
info['id'] = str(i['pin_id'])
info['url'] = "http://img.hb.aicdn.com/" + i["file"]["key"] + "_fw658"info['type'] = i["file"]["type"][6:]
images.append(info)
到此,图片的信息都已经得到了。
2.4 下载图片
知道了图片的url,下载图片就变的非常简单了,直接一个get请求,然后再将得到的图片保存到硬盘。
for image inimages:
req= requests.get(image["url"])
imageName= image["id"] + "." + image["type"]
with open(imageName,'wb') as fp:
fp.write(req.content)
2.5 处理下拉刷新
其实处理下拉刷新与之前讲到的处理主页面几乎是一样的,唯一不一样的是每次下拉刷新是get请求的url中max的值不一样,这个值就是我们得到的最后一张图片信息的pin_id。
defmake_ajax_url(No):"""返回ajax请求的url"""
return "http://huaban.com/favorite/beauty/?i5p998kw&max=" + No + "&limit=20&wfl=1"htmlPage= requests.get(url = make_ajax_url(images[-1]['id'])).content
最终程序
附注:花瓣网不需要登录、没有验证码,甚至网站都没有做最基本的反爬虫检测,可以直接得到想要的内容,相对来说还是比较容易处理,很适合刚开始接触爬虫的同学学习。唯一复杂点的是页面下拉刷新是用的ajax,这个也不难,找到每次get请求的参数是怎么获得的,就没问题了。
python花瓣飘零_Python 爬虫: 抓取花瓣网图片相关推荐
- python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...
完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...
- MySQL 怎么插入10天前的日期_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...
Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...
- python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...
- python花瓣飘零_Python爬虫练习之花瓣网
花瓣网是个瀑布式布局,而且下拉的时候发现要登录帐号.本来以为要用requests.post模拟登录,能够顺手练习一下的,结果不登陆帐号也照样可以爬取.一开始是打算用selenium的,后来运行的过程中 ...
- python趣图_Python爬虫抓取暴走漫画上GIF趣图的代码
本节内容: python爬虫实现代码 用 python3.3 实现的爬虫,主要爬取暴走漫画上的GIF趣图. 方便地下载很有意思的gif以便离线观看. 主要用到了 urllib.request 和 Be ...
- 爬虫python下载电影_python爬虫抓取电影天堂最新电影
该小脚本实现对电影天堂网站的最新电影查找.from bs4 import BeautifulSoup import urllib import re url= 'http://www.ygdy8.ne ...
- python中plguba_Python量化交易进阶讲堂-爬虫抓取东方财富网股吧帖子
欢迎大家订阅<Python实战-构建基于股票的量化交易系统>小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍.本篇专栏为小册子内容的加推篇!!! 前言 ...
- 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
最新文章
- [APIO/CTSC 2007]数据备份(贪心+堆)
- d3 和echart_D3.js与echart.js的应用场景
- 计算机硬盘是通用的吗,通用账务系统安装到计算机硬盘前需要进行的准备工作有()。A.清理硬盘B.校准计算机系统时间C.重设C - 作业在线问答...
- Docker phpMyAdmin 连接访问宿主机本地mysql
- Atitit 搜索的艺术 目录 1. 索引基础	2 1.1. 单词-文档矩阵	2 1.2. 倒排索引基本概念	3 2. 建立索引	4 2.1. 两遍文档遍历法(2-Pass In-Memory In
- DisplayTag使用指南(二) DisplayTag标签库详解
- python做数学计算器_python作为计算器 数学用法
- 计算机cpu性能过剩吗,都说CPU性能过剩,为什么电脑还有卡顿的情况?原来是它在拖后腿!...
- 在Clouda中使用jQuery Mobile问题解决方案
- 项目管理知识体系指南 (一)
- 大数据在金融行业的应用
- 项目管理知识点-结合Enovia项目管理模块
- 商城管理系统项目(前台+后台+管理员+用户+html+jsp)
- 陆游和辛弃疾都是南宋主战爱国的大才子,而且生活在同一个时代,有没有交集?
- ps cs6 mac破解方法
- 微信公众号点歌台php,【php】微信公众平台接口开发--点歌
- 我的世界 1.12.2 Idea 开发包构建教程
- HEVC代码学习13:predInterSearch函数
- 部分华为路由交换常用的基础实验总汇(不定时更新)
- 交换机组播风暴_用思科交换机杜绝局域网广播风暴