Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我是如何将博客转成PDF的

我是如何将博客转成PDF的

作者头像
Java3y
发布于 2018-12-26 03:19:22
发布于 2018-12-26 03:19:22
1.4K00
代码可运行
举报
文章被收录于专栏:Java3yJava3y
运行总次数:0
代码可运行

前言

只有光头才能变强

之前有读者问过我:“3y你的博客有没有电子版的呀?我想要份电子版的”。我说:“没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀”..然后就没有然后了。

最近也有个读者提过这个问题,然后这两天也没什么事做,所以打算折腾折腾,看看怎么把博客转成PDF。

一、准备工作

要将博客转成PDF,我首先想到的是能不能将markdown文件转成PDF(因为平时我就是用markdown来写博客的)。

  • 想了一下,原生markdown显示的话,代码是没有高亮的,格式也不会太好看。
  • 所以就放弃了这个想法。

于是就去想一下,可不可以将HTML转成PDF呢。就去GitHub搜了有没有相关的轮子,也搜到了一些关于Python的爬虫啥的,感觉还是蛮复杂的。

后来,终于搜到了个不错的:

  • https://github.com/petterobam/my-html2file

介绍:收集一系列html转文档的开源插件,做成html页面转文件的微服务集成Web应用,目前包含 html转PDF、html转图片、html转markdown等等。

功能:

  • 网页转PDF(参用wkhtml2pdf插件)
  • 网页转图片(参用wkhtml2pdf插件)
  • 网页转Markdown(参用jHTML2Md)
  • 网页转WORD(参用Apache POI)

这里我主要用到的网页转PDF这么一个功能,对应的插件是wkhtml2pdf。

1.1踩坑

发现了一个不错的轮子了,感觉可行,于是就去下载来跑一下看看怎么样。启动的时候倒没有出错,但在调接口的时候,老是抛出异常。

  • 于是就开始查一下路径,url有没有问题啦,查来查去发现都没问题啊。

后来才发现我的wkhtml2pdf.exe文件打不开,说我缺少几个dll文件。于是,我首先想到的是去wkhtml2pdf官网看看有没有相关的问题,想重新下载一个,但官网都进不去…(不是墙的问题)

  • https://wkhtmltopdf.org/
  • (ps:一个周末过去了,发现又能打开了。)

好吧,于是就去找‘dll文件缺失怎么办’。后面发现,安装一下Visual C++ Redistributable for Visual Studio 2015就好了(没有网上说得那么复杂)

  • https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145

完了之后,发现可以将一个HTML转成PDF了,效果还不错

  • 有目录
  • 可复制粘贴
  • 可跳转到链接
  • 清晰度好评

HTML转成PDF

缺点:

  • 页面加载速度慢的HTML,图片还没加载出来就已经生成PDF了
    • 所以我选用了博客园(速度快)
  • 在PDF的末尾有好几页不相关的(评论,广告啥的)

本来想着能不能只截取HTML博文的部分啊(评论,广告和其他不相关的不截取)。于是就去搜了一下,感觉是挺麻烦的,自己做了几次试验都没弄出来,最后放弃了。

后来又想了一下,我不是有一个没有广告的博客平台吗,刚好可以拿来用了。但是,我自己写完的markdown是没有全部保存在硬盘上的,后来发现简书可以下载已发布文章的所有markdown

简书可以下载所有的文章

下载下来的文章,我想全部导入到之前那个无广告的博客平台上。但发现导出来的markdown没有高亮语法..

下载下来的markdown没有高亮语法

// 没有语法高亮咋看啊,所以到这里我就放弃了,将就用一下博客园生成的PDF吧

1.2爬虫学习

上面GitHub提供的接口是一个URL生成一个PDF文件,我是不可能一个一个将链接和标题放上去生成的(因为博客园上发的也将近200篇了)。

而我是一点也不会爬虫的,于是也去搜了一下Java的爬虫轮子,发现一个很出名(WebMagic)

  • https://github.com/code4craft/webmagic

于是就跟着文档学习,也遇到了坑…文档给出的版本是0.7.3,我使用的JDK版本是8,用它的例子跑的时候抛出了SSLException异常(然而网上的0.6.x版本是没有问题的)

折腾完折腾去,也找到了0.7.3版本在JDK8上如何解决SSLException异常的办法了:

  • http://www.cnblogs.com/vcmq/p/9484418.html

修改HttpClientDownloader和HttpClientGenerator这两个类的部分代码就好了。

但是,我还是死活写不出能用的代码出来(真的菜!)..后来去问了一下同事(公众号:Rude3Knife)咋搞,他用Python几分钟就写好了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_blog_yuan(blog_name, header):
    for i in range(1, 6):
        url = 'https://www.cnblogs.com/' + blog_name + '/default.html?page=' + str(i)
        r = requests.get(url, headers=header, timeout=6)
        selector = etree.HTML(r.text)
        names = selector.xpath("//*[@class='postTitle']/a/text()")
        links = selector.xpath("//*[@class='postTitle']/a/@href")
        for num in range(len(names)):
            print(names[num], links[num])
        time.sleep(5)

我也不纠结了..直接用他爬下来的数据吧(:

WebMagic中文文档:

  • http://webmagic.io/docs/zh/

最后

最后我就生成了好多PDF文件了:

PDF文件

// 这篇文章简单记录下我这个过程吧,还有很多要改善的[//假装TODO]。如果你遇到过这种需求,有更好的办法的话不妨在评论区下告诉我~~

WebMagic我的Demo还没写好!!!如果有兴趣或者用过WebMagic的同学,有空的话不妨也去爬爬我的博客园的文章,给我一份代码(hhhhh)

分析可能的原因:博客园反爬虫or爬取规则没写好

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java3y 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
几款主流好用的 Markdown 编辑器!值得拥有
Markdown 其实在 2004 年就有了,不过之前一直很小众,这几年随着相关应用平台的发展,Markdown以其独到的优势迅速火起来了。Markdown编辑器使用一套格式标记语言来对文档内容进行排版和格式显示。而Markdown的标记很少,常用的也就十个左右,它是一种非常轻量的标记语言。
终码一生
2022/04/15
7.1K0
几款主流好用的 Markdown 编辑器!值得拥有
WebMagic初探,了解爬虫
在使用webMagic之前,先了解一下几个基本的知识 爬虫,可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。 Xpath Xpath的全称是 XML Path Language,XPath是一种称为路径表达式的语法,定位到XML或HTML中的任意一个或多个节点元素,获取元素的各项信息,在解析结构比较规整的XML或HTML文档的时候,用XPath路径表达式非常快速、方便。 对于概念看不懂也没关系,可以先看下面的代码然后再回过
tanoak
2018/06/06
8020
花了一天整理了一些我常用的工具
我之前用Windows的时,在写markdown时最喜欢用的是MarkdownPad2,主要习惯了它的快捷键,所以在Windows平台的时候一直都没换
Java3y
2019/05/08
1.6K0
花了一天整理了一些我常用的工具
最容易上手的爬虫项目
开始之前我们需要确定一个爬取的目标,从博客园上选一个博主的首页进入。在这个例子里面我们要写一个爬虫将博主的文章列表拉出来,保存在一个JSON的文件里面。
stormwen
2019/08/05
5650
「玩转Python」打造十万博文爬虫篇
使用到的第三方类库:BeautifulSoup、html2text、PooledDB
小柒2012
2019/12/09
3470
天眼连接你我
最近读者想让我多发点爬虫文章,实在是时间原因,让各位就等了,我一口气,继续研究字体反爬策略,本文是基于天眼进行初探,后文待续。
公众号guangcity
2019/09/20
6000
天眼连接你我
Jmeter(四十五) - 从入门到精通高级篇 - Jmeter之网页爬虫-上篇(详解教程)
  上大学的时候,第一次听同学说网页爬虫,当时比较幼稚和懵懂,觉得就是几只电子虫子爬在网页上在抓取东西。后来又听说写代码可以实现网页爬虫,宏哥感觉高大上,后来工作又听说,有的公司做爬虫被抓的新闻等等。一直以来,爬虫似乎都是写代码去实现的,今天宏哥心血来潮,试一下能不能不写代码实现网页爬虫了。因此今天文章的主题就是介绍一下 Jmeter 如何实现一个网页爬虫!这里宏哥以爬取博客园首页文章为例实战一下。
北京-宏哥
2021/06/01
1.2K0
Jmeter(四十五) - 从入门到精通高级篇 - Jmeter之网页爬虫-上篇(详解教程)
.NET轻松写博客园爬虫
爬虫,是一种按照一定的规则,自动地抓取网站的程序或者脚本。`.NET`写爬虫非常简单,并能轻松优化性能。今天我将分享一段简短的代码,爬出博客园前200页精华内容,然后通过微小的改动,将代码升级为多线程爬虫,让爬虫速度提升数倍;最后将对爬到了内容进行一些有趣的分析。
心莱科技雪雁
2019/09/05
9840
.NET轻松写博客园爬虫
爬取《The Hitchhiker’s Guide to Python!》python进阶书并制成pdf
这是日常学python的第15篇原创文章 前几篇文章我们学习了requests库和正则,还有个urllib库,我上篇文章也用了requests库来教大家去爬那些返回json格式的网页,挺好玩的。有读者让我来个正则的,所以我今天就来个正则+requests来进行爬取。 今天原来是想爬小说的,但想到我不怎么看小说,读者也是都喜欢学习的,对吧?嘻嘻!所以我来爬个与python相关的内容,恰好前几天我又看到别人推荐的一本python进阶书,这本书的作者是我们的python大神kennethreitz征集各路爱好p
sergiojune
2018/04/04
1K0
爬取《The Hitchhiker’s Guide to Python!》python进阶书并制成pdf
搭建个人博客
最开始想做一个自己博客,主要是因为看到了很多人都有,觉得自己没有太 Low 了。于是申请了 CSDN 的用户,但是太丑了,于是又申请了博客园,感觉这些都不是我想要的,而做为一个 Emacser 不使用 Github 搭建一个自己的博客,感觉就已经落伍了。
zucchiniy
2020/05/22
1.3K0
Learning Scrapy(一)
  学习爬虫有一段时间了,从Python的Urllib、Urlllib2到scrapy,当然,scrapy的性能且效率是最高的,自己之前也看过一些资料,在此学习总结下。
oYabea
2020/09/07
8520
打造自己的博客园页面
刚接触博客园时,总有一种要定制打造自己博客页面的冲动,后来感觉原有的模板足够了(博客园提供了大量的模板),没有做这项工作。今天不太忙,稍微研究了下博客园的页面定制功能,记录如下。
黑泽君
2018/10/11
1.7K0
打造自己的博客园页面
Python打印公众号文章范例,解决微信公众号文章采集打印pdf图片无法显示的问题
python第三方库pdfkit非常好用,基本上应用它就可以打印出pdf文件,作为学渣收藏干货吃灰简直是完美匹配,本渣渣也写了不少爬取不少干货打印成pdf的文章,其中就有微信公众号文章,前段时间又继续折腾了公众号文章打印pdf,发现如果存在图片就挂比,歇菜了!
二爷
2021/05/20
1.7K0
个人搜索技巧小记
去搜错误码(可以看看日志文件里有没有),不搜不知道,一搜真香,网上大概率会有对应问题的解决教程
suwanbin
2020/03/13
6341
我TM就是管住不自己这双手啊
其实从很早的时候就开始了个人博客网站的搭建,最初得益于 github.io 域名的开放。总的来说,我搭建博客的历史主要分为三个阶段。
evilpan
2023/02/12
3870
我TM就是管住不自己这双手啊
Scrapy爬取自己的博客内容
根据给定的文章内容,撰写摘要总结。
古时的风筝
2018/01/08
9360
Scrapy爬取自己的博客内容
博客平台知乎_同一篇文章在简书和微信号
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说博客平台知乎_同一篇文章在简书和微信号,希望能够帮助大家进步!!!
Java架构师必看
2022/07/29
6420
博客平台知乎_同一篇文章在简书和微信号
花了一天整理了一些我常用的工具
我之前用Windows的时,在写markdown时最喜欢用的是MarkdownPad2,主要习惯了它的快捷键,所以在Windows平台的时候一直都没换
Rude3Knife的公众号
2019/08/06
6940
花了一天整理了一些我常用的工具
【nodeJS爬虫】前端爬虫系列 -- 小爬「博客园」
写这篇 blog 其实一开始我是拒绝的,因为爬虫爬的就是cnblog博客园。搞不好编辑看到了就把我的账号给封了:)。 言归正传,前端同学可能向来对爬虫不是很感冒,觉得爬虫需要用偏后端的语言,诸如 php , python 等。当然这是在 nodejs 前了,nodejs 的出现,使得 Javascript 也可以用来写爬虫了。由于 nodejs 强大的异步特性,让我们可以轻松以异步高并发去爬取网站,当然这里的轻松指的是 cpu 的开销。 要读懂本文,其实只需要有 能看懂 Javascript 及 JQue
Sb_Coco
2018/05/28
1.6K0
在微信小程序上做一个「博客园年度总结」:后端部分
2022年马上要结束了,最近突然有个想法,利用微信小程序+博客园接口做了一个「博客园年度总结
冰霜
2023/02/24
1.2K0
在微信小程序上做一个「博客园年度总结」:后端部分
相关推荐
几款主流好用的 Markdown 编辑器!值得拥有
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档