起源
kindle是個好東西啊,如果長時間閱讀的話,kindle的體驗遠勝於手機、電腦。亞馬遜上有豐富的kindle電子書資源,但很遺憾,亞馬遜上沒有網絡小說。手機起點又不支持推送到kindle閱讀,如果偶爾先看看網文的話,那是真的有點淡疼……
於是,就抽出幾天零碎時間,寫了個簡單的小工具,我把它叫做Kindle網文助手。支持從網絡上下載網絡小說,並推送到 kindle 上閱讀。
請注意,此項目不提倡盜版閱讀,只因爲手機起點看書費眼,也沒有推送到 kindle 的途徑,才萌生想法編寫此項目。沒有直接爬起點網站,是嫌起點反爬太多,太麻煩了(畢竟起點要面對那麼多盜版網站的爬蟲)。網文作者寫書不易,有能力的朋友儘量訂閱支持一下。
推薦如下操作: 選擇一本想看的書 xxx => 打開起點,找到 xxx => 自動訂閱 => 打開 kindle 網文助手,緩存 xxx => 推送到 kindle 閱讀
如果真的沒有閒錢,也請註冊一下起點的賬號,加一下收藏,投一下免費的推薦票,爲你喜歡的小說點贊。寫手不易,且行且珍惜。
隨便寫寫的極簡版本,比較簡陋,湊合着用吧,等待後期迭代。
此項目只用於技術交流,請勿用於任何商業用途,否則後果自負!
轉載請註明來源:https://blog.csdn.net/aaronjny/article/details/104801162
開發環境
項目結構可以分爲三個部分,前端、後端和爬蟲。前端主要提供用戶交互功能,後端提供api服務,爬蟲提供小說抓取支持。
關於前端:
爲了快速成型,前端選擇了使用 Vue.js + Element UI 實現。沒有刻意去美化前端,畢竟自己用,功能齊全,操作方便就行。考慮到有時候會用手機打開助手,所以對頁面做了響應式佈局處理,保證在不同分辨率的屏幕上,頁面都能正常顯示。
關於後端:
編程語言使用Python3.7,Web框架選擇Flask,我不太喜歡用Django,太重量型了,Flask更輕便,想要什麼加什麼,用起來更舒服。ORM選擇了sqlalchemy。生產環境部署選擇gunicorn + gevent,畢竟只是自己用,就沒用nginx代理。
關於爬蟲:
跟第二點考慮相同,不想把項目搞得太複雜,爬蟲使用requests+beautifulsoup4實現,沒有做併發。沒做併發的原因有兩點:①反正是放在後臺跑,慢點沒關係②出於穩定性考慮,頻率高可能會導致被ban的機率提升③會使項目更復雜,要加入新的組件。關於第三點,我在付出與收益上權衡再三,決定還是不做併發——對使用體驗沒有多大影響,覺得沒啥必要。後面在實際使用中看是否有加入併發的必要。
另外,爲了最小可用模型的開發速度,目前助手裏面只加了一個網站的爬蟲,但基本上也夠用了。後續會增加更多網站爬蟲支持(可能?看懶不懶吧……)。
如果想自己增加爬蟲的話,也很簡單,我提前留好了接口。只需要在src/spiders/spider.py
中添加相關的爬蟲類,繼承 BaseSpider
類並實現相關接口即可。程序會自動解析並加載所有爬蟲。
關於數據庫:
MySQL 5.7。雖然想讓項目儘量簡單,但思來想去,數據庫還是沒法省略掉的。
關於消息隊列:
這裏消息隊列主要用於後端與爬蟲之間的通信,選擇的rabbitmq。有考慮過redis,畢竟redis+scrapy還是很舒服的。但覺得redis有點太重了,遂放棄。同理,考慮過celery做異步,也放棄了。
使用方法
這個就直接參考GitHub吧,地址如下:
WebFictionForKindle : https://github.com/AaronJny/WebFictionForKindle
簡單演示
1.打開瀏覽器,訪問主頁,默認 http://localhost:7777/,根據個人情況修改:
2.當前沒有緩存任何小說,我們搜索一下:
3.只搜索出來一個結果。看一下基本信息,這就是我需要的,所以我點擊 導入書籍
。可以看到,書籍被加入到書架中,並開始緩存所有章節:
4.小說的緩存進度會自動刷新,每 5 秒刷新一次:
5.在小說緩存的過程中,我們看一下其他功能。如果需要推送小說到 kindle,還需要配置郵箱信息。點擊 配置郵箱
按鈕:
按照要求填寫各配置項,並提交。關於亞馬遜的〖發送至 Kindle〗的更多信息,可以參考瞭解如何使用〖發送至 Kindle〗電子郵箱系列文檔。
6.配置爬蟲
按鈕可以對使用的爬蟲進行管理,初始版本只加入了一個爬蟲,後面會加入更多爬蟲:
7.小說已經緩存完成了,點擊 更新
按鈕,會檢測小說是否有新增章節,並自動緩存新增章節。
8.導出
按鈕,可以導出小說的 txt 文件到本地:
我把服務跑在一個遠程小主機上了,配置很差,帶寬只有 1m,所以下載到本地有點慢。
9.更多時候,我們並不需要把 txt 導出到本地。點擊 推送
按鈕,可以直接遠程生成 txt 文件並推送到 kindle 上:
請注意,亞馬遜的文檔推送服務有一定的延遲,打開 kindle 的網絡連接,耐心等待一下,就能在 kindle 上看到這本小說。
大概就是這樣吧,刪除
就不用演示了。
結語
爲了自己方便而編寫的小項目,不知道對你是否有幫助呢?
如果喜歡這篇文章的話,麻煩給個贊吧~謝謝大佬~
再次聲明,此項目不提倡盜版閱讀,網文作者寫書不易,有能力的朋友請儘量訂閱支持一下正版。如果真的沒有閒錢,也請註冊一下起點的賬號,加一下收藏,投一下免費的推薦票,爲你喜歡的小說點贊。寫手不易,且行且珍惜。此項目只用於技術交流,禁止用於任何商業用途,否則後果自負!