博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬取回车桌面图片
阅读量:2070 次
发布时间:2019-04-29

本文共 1174 字,大约阅读时间需要 3 分钟。

今天我们就来爬爬这个网站  这个网站能爬的资源还是很多的,但我就写一个例子,其他的可以根据思路去写。

首先还是先来分析下这个网站的图片获取过程

我选择的是图库,先随便选择一个标签,我这选宠物吧

哟,我们再看看有没有翻页 开启F12(开发者工具)

用不习惯火狐,还是开谷歌来看吧

那么就访问看看?随便选取一个访问看看是不是能出图片

结果肯定是可以的啦

问题来了,现在怎么查看最后一页的页码是什么?一种是无限循环下去 直到 没有图片标签的时候报错,还有一种就是从源码中找出页码 那就得看有没有页码按钮 刚才滚轮比较快 现在慢一点 看有没有页码这些东西

这网站还是有页码的,那说明在html源码中能找到页码数

两种方法:

F12工具选择元素

Ctrl+U走一波 源代码直接搜索

现在找到所有页码,接下来就是分析图片源地址了

选择目标图片看看是不是源地址 原图 打开一看其实不是

现在再点击进去图片里面 发现是原图了 这时再选择图片查看标签的图片链接

复制上图里面的链接 打开一看就是原图啦 看下图的链接 怎么那么熟悉?

对比下两个链接

略缩图 edpic_360_360

原图 edpic_source

这下整体思路就有啦,我们可以获取略缩图的链接将url进行重构,形成原图链接,然后再批量下载就好啦!

开始撸代码了!!!

第一个是 class Spider(): 我们声明了一个类,然后我们使用 def __init__去声明一个构造函数

分析怎么提取末页链接如下图:

这里我们采用多线程的方式爬取,引入下面几个模块

新增加一个全局的变量,而且是多线程操作,我们需要引入线程锁,避免资源同时写入出错。

all_img_urls = []#所有图片链接

g_lock = threading.Lock()#初始化一个锁

声明一个Producer的类,负责提取图片链接,然后添加到 all_img_urls 这个全局变量中

线程锁,在上面的代码中,当我们操作all_urls.pop(0)的时候,我们是不希望其他线程对他进行同时操作的,否则会出现意外,所以我们使用g_lock.acquire()锁定资源,然后使用完成之后,记住一定要立马释放g_lock.release(),否则这个资源就一直被占用着,程序无法进行下去了。

下面再定义一个DownPic类 用于下载图片

可以看到利用了down_time = str(round(t * 1000)) 来生成毫秒级时间戳来命名图片 其实也可以获取图片的名称来命名 那就靠自己去写一个了

再从if __name__ == "__main__": 添加下面代码 用于开启多线程下载

整体流程就这么写完啦!run下代码

Tips:跑这个代码需要在D盘创建test文件夹 或者自己修改代码实现其他功能

附出完整代码:

转载地址:http://omnmf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】26-Remove Duplicates from Sorted Array
查看>>
【LEETCODE】118-Pascal's Triangle
查看>>
【LEETCODE】119-Pascal's Triangle II
查看>>
word2vec 模型思想和代码实现
查看>>
怎样做情感分析
查看>>
用深度神经网络处理NER命名实体识别问题
查看>>
用 RNN 训练语言模型生成文本
查看>>
RNN与机器翻译
查看>>
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
决策树的python实现
查看>>
了解 Sklearn 的数据集
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>