只有光頭才能變強html
以前有讀者問過我:「3y你的博客有沒有電子版的呀?我想要份電子版的」。我說:「沒有啊,我沒有弄過電子版的,我這邊有個文章導航頁面,你能夠去文章導航去找來看呀」..而後就沒有而後了。python
最近也有個讀者提過這個問題,而後這兩天也沒什麼事作,因此打算折騰折騰,看看怎麼把博客轉成PDF。git
要將博客轉成PDF,我首先想到的是能不能將markdown文件轉成PDF(由於平時我就是用markdown來寫博客的)。github
因而就去想一下,可不能夠將HTML轉成PDF呢。就去GitHub搜了有沒有相關的輪子,也搜到了一些關於Python的爬蟲啥的,感受仍是蠻複雜的。web
後來,終於搜到了個不錯的:markdown
介紹:收集一系列html轉文檔的開源插件,作成html頁面轉文件的微服務集成Web應用,目前包含 html轉PDF、html轉圖片、html轉markdown等等。機器學習
功能:微服務
這裏我主要用到的網頁轉PDF這麼一個功能,對應的插件是wkhtml2pdf。post
發現了一個不錯的輪子了,感受可行,因而就去下載來跑一下看看怎麼樣。啓動的時候倒沒有出錯,但在調接口的時候,總是拋出異常。學習
後來才發現個人wkhtml2pdf.exe
文件打不開,說我缺乏幾個dll文件。因而,我首先想到的是去wkhtml2pdf官網看看有沒有相關的問題,想從新下載一個,但官網都進不去...(不是牆的問題)
好吧,因而就去找‘dll文件缺失怎麼辦’。後面發現,安裝一下Visual C++ Redistributable for Visual Studio 2015
就行了(沒有網上說得那麼複雜)
完了以後,發現能夠將一個HTML轉成PDF了,效果還不錯:
缺點:
原本想着能不能只截取HTML博文的部分啊(評論,廣告和其餘不相關的不截取)。因而就去搜了一下,感受是挺麻煩的,本身作了幾回試驗都沒弄出來,最後放棄了。
後來又想了一下,我不是有一個沒有廣告的博客平臺嗎,恰好能夠拿來用了。可是,我本身寫完的markdown是沒有所有保存在硬盤上的,後來發現簡書能夠下載已發佈文章的全部markdown。
下載下來的文章,我想所有導入到以前那個無廣告的博客平臺上。但發現導出來的markdown沒有高亮語法..
// 沒有語法高亮咋看啊,因此到這裏我就放棄了,將就用一下博客園生成的PDF吧
上面GitHub提供的接口是一個URL生成一個PDF文件,我是不可能一個一個將連接和標題放上去生成的(由於博客園上發的也將近200篇了)。
而我是一點也不會爬蟲的,因而也去搜了一下Java的爬蟲輪子,發現一個很出名(WebMagic)
因而就跟着文檔學習,也遇到了坑...文檔給出的版本是0.7.3
,我使用的JDK版本是8
,用它的例子跑的時候拋出了SSLException
異常(然而網上的0.6.x
版本是沒有問題的)
折騰完折騰去,也找到了0.7.3
版本在JDK8上如何解決SSLException
異常的辦法了:
修改HttpClientDownloader和HttpClientGenerator這兩個類的部分代碼就行了。
可是,我仍是死活寫不出能用的代碼出來(真的菜!)..後來去問了一下同事(公衆號:Rude3Knife)咋搞,他用Python幾分鐘就寫好了。
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中文文檔:
最後我就生成了好多PDF文件了:
// 這篇文章簡單記錄下我這個過程吧,還有不少要改善的[//僞裝TODO]。若是你遇到過這種需求,有更好的辦法的話不妨在評論區下告訴我~~
WebMagic個人Demo還沒寫好!!!若是有興趣或者用過WebMagic的同窗,有空的話不妨也去爬爬個人博客園的文章,給我一份代碼(hhhhh)
分析可能的緣由:博客園反爬蟲or爬取規則沒寫好
部門的前輩建議我去了解一下機器學習,我也想擴展一下眼界,因此這陣子會去學一下簡單的機器學習知識。(固然啦,我後面也會補筆記的)
樂於分享和輸出乾貨的Java技術公衆號:Java3y。關注便可領取海量的視頻資源!
文章的目錄導航: