需求描述:

    最近发现CL社区上好多精华的帖子分享的图片非常棒,好想好想保存下来,但是一张一张地保存太费时间了,因此,造物者思想主义的我就想动手写个工具,实现只要输入帖子的链接,就能把所有的精华图片下载下来。

程序分析思路:

    Python是一个很好的工具,使用起来非常方便。因此我决定用Python去实现。

思路大概就是,我先输入链接,然后每一张图片的链接,然后去下载它。需求很明确,逻辑应该很清晰,开始干吧。

    环境说明:本人使用的是win7+Python3

首先导入re、requests、os三个包,用于爬虫,os包用于目录的创建

输入你要保存图片的的链接url = input("Input key url: ")

这里以http://dd.dety.men/htm_mob/16/1808/32xxxxx.html为例,在浏览器打开是这样的,由于不可描述,我只能放这么一点东西

这里用获得网页的内容result = requests.get(url)

result.text是获取到的网页源码,为了避免有编码问题的困扰,我们现在前面做一下转码

然后我们需要在源码中找到标题,一会用作保存文件的文件名,标题的寻找的实现代码是,这样返回的是一个list,我们用的时候直接取第0个就好(程序猿数数都是从零开始的)。

这里要说一下这个寻找标题的实现代码的正则表达式,我们看到网页链接中的源码是

实现代码的正则表达式就是要找<title>和</title>中间的那一部分,找到的标题如下

下面来干正事了,从网页中找图片的链接,首先先看浏览器上,按F12打开开发者模式,点击一下"从页面中选中一个元素",选中图片,看到图片的源码

<input data-src="http://www.79img.com/u/20180829/13435782.jpg"

但是我们需要在Python中看看re获取到的源码是什么样的,

获取到的图片链接是这样的data-src=\'http://www.79img.com/u/20180829/13392462.jpg\',因此我们用下面这个代码来找到所有的图片链接

pic_url = re.findall('data-src=\'(.*?)\'', result_text, re.S)

找到链接之后就是下载了,这是下载的方法,keyword是刚才找到的标题名

加入了创建目录的操作

源码和如何使用:

最终的源码如下图所示:

源码已经上传至github,欢迎下载,欢迎各种star,fork

https://github.com/rootzhongfengshan/python_practical/tree/master/DownPictureFromCL

按如图使用

就可以看到在当前目录产生了一个目录,给你们看看最后的成果图吧,很黄很暴力。

手把手教你利用Python自动下载CL社区图片的更多相关文章

  1. 手把手教你用Python搭建自己的量化回测框架【均值回归策略】

    手把手教你用Python搭建自己的量化回测框架[均值回归策略] 引言 大部分量化策略都可以归类为均值回归与动量策略.事实上,只有当股票价格是均值回归或趋势的,交易策略才能盈利.否则,价格是随机游走的, ...

  2. 手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝

    手把手教你吧Python应用到实际开发 不再空谈悟法☝☝☝ 想用python做机器学习吗,是不是在为从哪开始挠头?这里我假定你是新手,这篇文章里咱们一起用Python完成第一个机器学习项目.我会手把手 ...

  3. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  4. 手把手教你吧Python应用到实际开发 不再空谈悟法✍✍✍

    手把手教你吧Python应用到实际开发 不再空谈悟法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

  5. 手把手教你把Python应用到实际开发 不再空谈语法

    手把手教你把Python应用到实际开发 不再空谈语法 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问 ...

  6. 手把手教你使用Python爬取西刺代理数据(下篇)

    /1 前言/ 前几天小编发布了手把手教你使用Python爬取西次代理数据(上篇),木有赶上车的小伙伴,可以戳进去看看.今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下. /2 首页分析 ...

  7. 手把手教你用Python抓取AWS的日志(CloudTrail)数据

    数据时代,利用数据做决策是大数据的核心价值. 本文手把手,教你使用python进行AWS的CloudTrail配置,进行日志抓取.进行数据分析,发现数据价值! 如今是云的时代,许多公司都把自己的IT架 ...

  8. 手把手教你用Python网络爬虫获取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

  9. 【震惊】手把手教你用python做绘图工具(一)

    在这篇博客里将为你介绍如何通过numpy和cv2进行结和去创建画布,包括空白画布.白色画布和彩色画布.创建画布是制作绘图工具的前提,有了画布我们就可以在画布上尽情的挥洒自己的艺术细胞. 还在为如何去绘 ...

随机推荐

  1. phpstorm中open in browser端口和路径设置

    phpstorm默认的端口号是:63342但是我装的apache服务器的默认端口是80网上查找资料,都说可以加listen的端口,比如这里 #Listen 12.34.56.78:80Listen 8 ...

  2. layer is not defined

    项目中使用layui中,引入新旧版本出现的一个问题. 使用console.log(layer) 打印出来的,显示使用的版本是1.8.0 但是页面中引入的layui有好几个.就是不使用最新的. /*这里 ...

  3. 16. 3Sum Closest (JAVA)

    Given an array nums of n integers and an integer target, find three integers in nums such that the s ...

  4. 关于iOS刷新UI需要在主线程执行

    为什么一定要在主线程刷新UI? 安全+效率:因为UIKit框架不是线程安全的框架,当在多个线程进行UI操作,有可能出现资源抢夺,导致问题. 其实:在子线程是不能更新UI的, 看到能更新的结果只是个假象 ...

  5. laravel -查询近7月走势图案例

    // 获取7月前的时间$time = date('Y-m',strtotime("-0 year -7 month -0 day" ));$where['created_at'] ...

  6. Java创建对象的初始化顺序

    1. 初始化块 初始化块通常写在类的构造方法之前,由花括号括起来,通常包含对成员属性进行初始化的语句: 初始化块分为instance初始化块和static初始化块,初始化块在构造方法执行之前被执行: ...

  7. HBase、MongoDB、cassandra比较

    前言 传统数据库遇到的问题,数据量很大的时候无法存储:没有很好的备份机制:数据达到一定数量开始缓慢,很大的话基本无法支撑:因此我们需要探究更加合适的数据库来支撑我们的业务. HBase 什么是HBas ...

  8. 纯css3单选框/复选框美化样式代码

    纯CSS 单/复选框 美化请选择iPhone 型号 iPhone 6s iPhone 6s Plus iPhone 7 iPhone 7 Plus   选择兴趣爱好 女 绘画 摄影 骑行   原理在这 ...

  9. PyCharm中 Django1.11配置Mysql数据库

    1.Django 中配置MySQL数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '数据库名称 ...

  10. linux回顾

    linux内容回顾: centos6.9  ubuntu12  麒麟linux  suse(德国linux)  depin xshell(连接工具) vmware workstation(个人学习) ...