阮一峰老师博客爬取与博客文章存储持久化方式的思考

  • 前言
  • 博客文章存储持久化思考
    • 文本形式存储
    • html形式存储
    • pdf形式存储
  • 博客爬取思路
    • 爬取思路一
    • 爬取思路二
    • 个人选择
    • pdf存储
  • 结尾

前言

以前阅读过阮一峰老师的博客,讲解通俗易懂,很是良心,想着把老师的博客都爬取下来,方便后面阅读。由于是第一次爬取并存储博客数据,如何永久储存博客是我需要思考的问题,而下来便是我自己总结的思路了。

博客文章存储持久化思考

文本形式存储

文本形式存储是指将数据储存在文本文件中,这种方式确实能直接、快捷储存文字数据,但是文本形式存储无法保存含有图片的博文,同时也无法保留文字格式存储,这样在阅读体验上会很差。

html形式存储

html形式存储是指将数据保存在html格式文件中,它把爬取到的网页源码保存到html文件中,在保存时单独下载博客中的图片到本地,并替换网页源码中图片的路径为本地图片的路径,这样打开html时能阅读到文字与图片,相对文本形式存储在体验上会好很多,但是除非一并下载css、js样式文件,不然本地打开的博文还是会乱序。

pdf形式存储

pdf形式存储是指将数据保存成pdf文件格式,当然,如果单纯得爬取并添加数据效果不会很好,所以需要依赖python第三方库pdfkit,它可以将字符串数据转换成pdf,而我们爬取到的网页源码字符串数据在转换时是能以网页原样式转换的,这样在文字顺序和图片上都能很好得还原博文本来的样貌。

博客爬取思路

网站:阮一峰网络日志
这个网站设计是不会展示全部的博文日志的,所以只能通过上下篇这种方式遍历到全部博文

爬取思路一

我们可以请求最新一期的博文,在保留这一期的博文数据时,拿到上一期的博文链接,在保存这一期的数据后请求上一期。以此类推不断爬取

爬取思路二

通过请求最新一期的博文拿到上一次的博文链接并保存链接,然后请求上期链接拿到上上期的网址,以此类推,第一次遍历只为了存储全部博文链接。待拿到全部链接后,循环遍历再次请求并保存数据即可

个人选择

我采用的是第二种爬取思路,因为第一遍得到全部链接后,我们可以通过多线程方式快速爬取到博文数据。

pdf存储

通过pip install pdfkit安装第三方库
还需wkhtmltopdf工具,下载路径,安装后要将wkhtmltopdf的bin目录添加到系统环境变量中

程序代码调用pdfkits时,pdfkit会调用wkhtmltopdf,通过wkhtmltopdf来调用windows中的wkhtmltopdf.exe来转化html为pdf。

pdfkit使用

options = {'page-size': 'Letter','encoding': "UTF-8",'custom-header': [('Accept-Encoding', 'gzip')]
}filename = './article/{}.pdf'.format(article_title.group(1))path_wk = r'C:\wkhtmltopdf\bin\wkhtmltopdf.exe'  # 安装位置
config = pdfkit.configuration(wkhtmltopdf=path_wk)
pdfkit.from_string(resp.text, filename, options=options, configuration=config)

结尾

分享到此结束,本次分享仅作学习用途,有什么问题欢迎讨论。
源码下载

阮一峰老师博客爬取与博客文章存储持久化方式的思考相关推荐

  1. 解决阮一峰老师博客广告拦截器问题

    在浏览器阮一峰老师博客时,存在广告拦截器,无法显示页面.如下: 这个问题是浏览器的adb广告拦截器插件导致的,只需要把该页面从adb插件中移除就可以. 具体操作为点击右上角插件按钮,取消该页面即可 关 ...

  2. python爬虫爬取csdn博客专家所有博客内容

    python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 #coding:utf-8import urlli ...

  3. python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)

    前言 CSDN2020年度博客之星马上就要收尾了,你知道自己关注的博主排名实时变化吗?谁是你心目中的博客之星,让我们爬取各位博主的排名及各位博主的一些个人信息. 代码 直接上代码 # -*- codi ...

  4. python 写csv scrapy_scrapy爬虫框架实例一,爬取自己博客

    本篇就是利用scrapy框架来抓取本人的博客,博客地址:http://www.cnblogs.com/shaosks scrapy框架是个比较简单易用基于python的爬虫框架,相关文档:http:/ ...

  5. 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...

  6. 大屏监控系统实战(6)-爬虫初探:爬取CSDN博客之星年度总评选投票统计数据

    一.介绍 我们先来做个简单的,我们的目标是爬取CSDN博客之星年度总评选的首页信息. 首页的地址:http://m234140.nofollow.ax.mvote.cn/wxvote/43ced329 ...

  7. [python爬虫] 正则表达式使用技巧及爬取个人博客实例

    这篇博客是自己<数据挖掘与分析>课程讲到正则表达式爬虫的相关内容,主要简单介绍Python正则表达式爬虫,同时讲述常见的正则表达式分析方法,最后通过实例爬取作者的个人博客网站.希望这篇基础 ...

  8. Python 爬取51cto博客标题浏览量、评论量、收藏

    介绍 提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教 ...

  9. 将csdn的博客爬取到本地并输出为jekyll可解析的markdown格式,同时保存博客的图片到本地

    前言 在Github Pages搭建个人博客时利用 Jekyll 生成站点,Jekyll是一个静态站点生成器,可以根据Markdown文件自动生成静态的html文件.且Github Pages 支持托 ...

最新文章

  1. 从视觉到语言:半监督式学习的大规模实际运用
  2. java oom_Java中关于OOM的场景及解决方法
  3. 孙鑫-MFC笔记五--对话框
  4. http --- 从输入URL到页面加载的过程发生了什么?
  5. springboot(运行原理参考借鉴)
  6. 怎么用python语法1234_python 基本语法1
  7. 麦子学院cocos2d听课截图
  8. zhaow游戏知识问答
  9. python数据分析练手小项目-汽车销售偷漏纳税人识别
  10. 曹雪芹的诗歌鸿蒙,曹雪芹的诗
  11. hive为什么insert into后数据被覆盖了
  12. C++function,future,packaged_task
  13. C++11介绍之vector::push_back和vector::emplace_back区别
  14. 赚钱,一定要对自己狠
  15. 【论文阅读笔记】Multi-Task Feature Learning for Knowledge Graph Enhanced
  16. 隐马尔科夫模型(HMM)模型训练:Baum-Welch算法
  17. [bzoj3238]差异
  18. 概说SEO中的过度优化
  19. 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)
  20. CRLF、LF、CR详解及在git中应用

热门文章

  1. 【网单服务端】奇迹EX802完美转生端+真实格斗大师+新地图+新技能+新装备一键端服务端
  2. HP LaserJet M1213nf win10 64bit系统不能连接32bit系统网络打印机
  3. 爬取微博用户公开信息,分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!...
  4. 目标检测的置信度和NMS
  5. 把一个文件夹下的所有csv文件合并到一个csv文件中,并添加文件名作为列名
  6. 现在很多新电脑还是VGA接口,应该淘汰换HDMI/DP
  7. Excel保护工作表和保护工作簿的区别
  8. SVN服务端客户端安装配置及权限管理
  9. GICv3软件overview手册之GICv3基本功能(5)
  10. 对话 a16z 联创 Marc Andreessen:Web3 将产生基础性技术变革