美文网首页python社区Python
python爬取回车桌面图片

python爬取回车桌面图片

作者: 9ba4bd5525b9 | 来源:发表于2019-05-26 15:00 被阅读50次

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

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

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

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

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

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

    https://tu.enterdesk.com/chongwu/6.html

    结果肯定是可以的啦

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

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

    两种方法:

    F12工具选择元素

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

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

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

    https://up.enterdesk.com/edpic_360_360/4c/3e/c2/4c3ec2be7061121ad5994a9b51241fa3.jpg

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

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

    对比下两个链接

    https://up.enterdesk.com/edpic_360_360/4c/3e/c2/4c3ec2be7061121ad5994a9b51241fa3.jpg

    https://up.enterdesk.com/edpic_source/4c/3e/c2/4c3ec2be7061121ad5994a9b51241fa3.jpg

    略缩图 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文件夹 或者自己修改代码实现其他功能

    附出完整代码:

    相关文章

      网友评论

        本文标题:python爬取回车桌面图片

        本文链接:https://www.haomeiwen.com/subject/ewaxtctx.html