相信很多人都喜欢在简书上写文章,但是诸如很多平台或者博客平台一样,平台的检查机制很多时候会误杀一批人,导致无故账号被封。虽然事后可以交涉解封,但其中各种滋味唯有经历过的人才能感受到。于是大家最好养成经常备份的好习惯,还好简书的后台有一个下载所有文章的按钮。虽然可以浏览器打开直接查看,可惜的是,文章的图片还是线上的 ,并没有备份到本地就仍然会有丢失的可能。 小马即兴搞了一个入门python小爬虫脚本来爬取文章图片保存到本地,妈妈再也不用担心文章丢失了。小马也是初学者,分享仅供参考,但希望能抛砖引玉,共同进步。
思路分析
遇到问题就想办法解决喽,我们从简书后台下载下来的所有文章是一个rar压缩包,解压后是按文集为文件夹的一堆html文件,如果你用的markdown编辑则是一堆md文件。那么问题来了,我们的文章是下载下来了,但是文章中的图片还是只是个远程链接,图片没有保存在本地。于是,小马打开了一个html文件,发现就是一个静态html文件,很好,我们可以爬取到文章的每个图片链接,下载到本地。这时候python爬虫就登场了。
python爬虫
python是什么?按照老惯例,我们先来看一下百科怎么说:
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
哎呀,又是一顿商业互吹。咋也不管了,Lu起键盘就是干。我们首先要写一个脚本,让其遍历本地备份文章的整个目录文件夹和文件,然后打开文件,读取每一行文件内容,然后对每一行的文件内容进行正则匹配,匹配到图片的元素,然后把地址挖出来进行下载。爬虫爬一遍完文件自然图片也就下完了,为了后续辨认我们会把图片放在对应文章名称的文件夹中,并按备份的时间来创建文件夹保存图片。
我们要跑起python,就要先安装,于是安装就不赘述了,基本就是傻瓜安装。安装完注意把路径注册到系统变量中,这样就可以全局运行python命令了。我们来跑一个简单的实例。
好了,我们的武器已经生产好了,接下来就是战斗了。我们看到,我们下来的包解压之后目录是类似这样。
好了,我们来遍历这个文件夹处理。小马遍历的时候为了调试直接输出文章标题,但因为有中文乱码导致IO错误,执行报错。
解决办法就是设置窗口字符集,也是醉醉的。如下处理后运行正常。
当然,输出文件名并不是我们的最终目的,我们要下载所有图片到本地呢。于是下面的代码最终出炉,下例中只针对HTML里的图片正则,md文件的同理更换正则式子即可。后续小马会托管到git供有些小伙伴入门参考。
好了,我们cmd到脚本的所在目录执行脚本,直接完成了所有文章图片的本地备份。
查看图片下载效果。
Python脚本怎么用
打完收工。对于大多数人可能不太感兴趣它是怎么诞生地,只是需要这么一个工具来爽歪歪。小马后续打算封装成小工具供大家下载直接运行使用。但目前还是顺手说下拿到这个脚本怎么跑,麻烦是麻烦了点,但很助于理解。以window为例。
1、官网下载对应版本Python并傻瓜式安装,注册安装目录到系统环境变量。
2、简书后台,一键下载你的文章压缩包,解压,重命名为articlebak。下载上面我们写的脚本文件imgbakScript.py,放在与你的文章文件夹同目录下,就像下面这样。
3、你需要打开cmd,到目录一下敲命令python imgbakScript.py即可。如下:
好了,你会发现同级目录下多了个imgbak文件夹,里面就是所有文章的图片被下到本地了。
就到这吧,需要脚本源码文件的也可以直接call小马(点这里下载)。不到之处欢迎指正,拜拜。
相关文献:
分布式爬虫(URL队列分配给多个机器去爬取)
python和go的区别(go需要bulid编译,go比py快;py适合web和科学数据,库丰富,go更像c的升级版,系统语言;py没有内置并发机制go有)
原创文章,未经允许请勿转载。