Python3爬取1024图片

分析

列表页面

首先进入1024的导航网站,随便点击一个地址进入选择图片区或者在网站地址后面添加,这就是1024网站的图片区,这个爬虫就是主要抓取这个区域的所有图片,使用浏览器debug分析一下这个页面发现基本都是列表页,格式如下:

在地址栏后面拼1、2、3等于就是访问图片区第一页、第二页、第三页的列表页。根据这些列表页就可以爬出具体的每一个图片页的地址,类似上图的地址: 在地址的前面拼接上主站地址就是具体的图片页了。所以根据以上的分析:通过循环地址栏找到不同的列表页在根据列表页找到具体的图片页

地址栏->图片列表->图片页地址

获取列表页图片地址代码如下:

在这个地址后面拼接1到N就是不同的列表页

图片页面

利用浏览器debug一下页面,图片基本上都是外链地址,以http或者https开头以jpg、png、gif结尾,写个正则表达式匹配这些地址,然后交给程序下载就OK了。

页面代码如下:

在下载过程中遇到了几个问题,就是有的页面会报403禁止访问等,应该是网站加了一些防止爬虫的手段,网上找了下加上header参数来模拟浏览器访问就解决了;

下载单个页面代码如下:

批量爬取

批量爬取有两个工作要做,第一for循环目标内的所有列表页,第二为了避免重复爬取,需要给每个页面建立唯一的文件夹,下次爬取的时候如果存在直接跳过。最后在理一下所有的爬取步骤:

循环地址栏->找出图片页列表->图片页分析找出图片地址->为图片页建立唯一的文件夹->开始下载页面图片

完整的代码如下:

最后的爬取结果:

源代码地址:python-crawler

具体地址和源代码在一起

其它

关于python2和python3的争论,网站争论比较大python3不兼容pyhton2,很多第三方的类库暂时还没有支持python3等等,但是对于我们新手来说,肯定是往前看果断python3.

代码比较冗余几个地方还没有写好,还在慢慢学习中,目前只是搞的可以跑起来。还有几个问题没有解决,下载一段时间后会莫名其妙的断掉目前还么找到原因,后期看是否可以加上多线程来爬取可能会快一点,大家有什么更好的建议也可以提出来。

文章

申明

作者:纯洁的微笑

源自:http://www.cnblogs.com/ityouknow/p/6013074.html

声明:文章著作权归作者所有,如有侵权,请联系小编删除

本文来自企鹅号 - python媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

Linux 文件管理命令语法、参数、实例全汇总(一)

命令:cat cat 命令用于连接文件并打印到标准输出设备上。 使用权限 所有使用者 语法格式 cat [-AbeEnstTuv] [--help] [--v...

36460
来自专栏破晓之歌

vue中axios处理http发送请求的示例(Post和get)

axios中文文档:https://github.com/mzabriskie/axios#using-applicationx-www-form-urlenc...

25330
来自专栏北京马哥教育

神技能:Python控制键盘鼠标

上面提到的子包都已被引入到pynput库中。要使用上面的子包,从pynput中引入即可。

27000
来自专栏崔庆才的专栏

分析Ajax爬取今日头条街拍美图

17440
来自专栏大内老A

谈谈基于OAuth 2.0的第三方认证 [中篇]

虽然我们在《上篇》分别讨论了4种预定义的Authorization Grant类型以及它们各自的适用场景的获取Access Token的方式,我想很多之前没有接...

26660
来自专栏逸鹏说道

C#进阶系列——WebApi接口测试工具:WebApiTestClient

前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个...

37170
来自专栏程序员八阿哥

王老板Python面试(9):整理的最全 python常见面试题(基本必考)

1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方法和iter方法返回自己本身。对于string、list、dict、tuple等这类容器对象,使用...

22010
来自专栏Puppeteer学习

一步一步学Vue(七)

17030
来自专栏程序员互动联盟

【答疑释惑】菜鸟怎么调试简单程序?

首先公布昨天留的课后作业答案的宏定义函数的答案 #define f(a, b, x) a*x+b printf("%d, %dn", f(3,2,1), ...

34850
来自专栏Python攻城狮

MongoDB与python交互1.Pymongo2.安装3.使用4.mongoDB其它操作5.Mongodb与python交互6.完成命令行项目:学生信息管理(基于Python2.7)

PyMongo是Mongodb的Python接口开发包,是使用python和Mongodb的推荐方式。

16330

扫码关注云+社区

领取腾讯云代金券