接触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 爬虫: 抓取花瓣网图片相关推荐

  1. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  2. python爬虫实现股票数据存储_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  3. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  4. MySQL 怎么插入10天前的日期_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储!...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  5. python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...

  6. python花瓣飘零_Python爬虫练习之花瓣网

    花瓣网是个瀑布式布局,而且下拉的时候发现要登录帐号.本来以为要用requests.post模拟登录,能够顺手练习一下的,结果不登陆帐号也照样可以爬取.一开始是打算用selenium的,后来运行的过程中 ...

  7. python趣图_Python爬虫抓取暴走漫画上GIF趣图的代码

    本节内容: python爬虫实现代码 用 python3.3 实现的爬虫,主要爬取暴走漫画上的GIF趣图. 方便地下载很有意思的gif以便离线观看. 主要用到了 urllib.request 和 Be ...

  8. 爬虫python下载电影_python爬虫抓取电影天堂最新电影

    该小脚本实现对电影天堂网站的最新电影查找.from bs4 import BeautifulSoup import urllib import re url= 'http://www.ygdy8.ne ...

  9. python中plguba_Python量化交易进阶讲堂-爬虫抓取东方财富网股吧帖子

    欢迎大家订阅<Python实战-构建基于股票的量化交易系统>小册子,小册子会陆续推出与小册内容相关的专栏文章,对涉及到的知识点进行更全面的扩展介绍.本篇专栏为小册子内容的加推篇!!! 前言 ...

  10. 用python爬虫下载视频_使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

最新文章

  1. [APIO/CTSC 2007]数据备份(贪心+堆)
  2. d3 和echart_D3.js与echart.js的应用场景
  3. 计算机硬盘是通用的吗,通用账务系统安装到计算机硬盘前需要进行的准备工作有()。A.清理硬盘B.校准计算机系统时间C.重设C - 作业在线问答...
  4. Docker phpMyAdmin 连接访问宿主机本地mysql
  5. Atitit 搜索的艺术 目录 1. 索引基础 2 1.1. 单词-文档矩阵 2 1.2. 倒排索引基本概念 3 2. 建立索引 4 2.1. 两遍文档遍历法(2-Pass In-Memory In
  6. DisplayTag使用指南(二) DisplayTag标签库详解
  7. python做数学计算器_python作为计算器 数学用法
  8. 计算机cpu性能过剩吗,都说CPU性能过剩,为什么电脑还有卡顿的情况?原来是它在拖后腿!...
  9. 在Clouda中使用jQuery Mobile问题解决方案
  10. 项目管理知识体系指南 (一)
  11. 大数据在金融行业的应用
  12. 项目管理知识点-结合Enovia项目管理模块
  13. 商城管理系统项目(前台+后台+管理员+用户+html+jsp)
  14. 陆游和辛弃疾都是南宋主战爱国的大才子,而且生活在同一个时代,有没有交集?
  15. ps cs6 mac破解方法
  16. 微信公众号点歌台php,【php】微信公众平台接口开发--点歌
  17. 我的世界 1.12.2 Idea 开发包构建教程
  18. HEVC代码学习13:predInterSearch函数
  19. 部分华为路由交换常用的基础实验总汇(不定时更新)
  20. 交换机组播风暴_用思科交换机杜绝局域网广播风暴

热门文章

  1. 十步一拆:iPhone4S拆机十步曲
  2. 用积木搭出的埃菲尔铁塔
  3. html转到百度的链接,简易制作百度跳转链接
  4. 电子邮件归档市场现状分析
  5. IDEA 集成配置 Jad
  6. 将所有.java文件修改为.jad文件格式
  7. 西威变频器avo下载调试资料_变频器设置面板及参数设置方法
  8. ctfmon是什么启动项_win7启动项没有ctfmon.exe的解决方法
  9. 国内自主研发的游戏引擎一览
  10. 10种软件滤波方法的示例程序(匠人转载学习)