用Python爬取漫畫並轉換格式爲pdf和mobi

工具

  • Python3
    • requests
    • pypdf2
  • Linux
    • convert
    • pdftk
  • calibre,電子書格式轉換神器

漫畫爬取

這一部分使用Python代碼完成

第三方庫:

requestsbs4

# coding: utf-8
import requests

# 這裏爬取的是"漫畫臺"的漫畫
index_url = "http://www.manhuatai.com"

# 觀察需要爬取的漫畫,可以發現幾個規律

# 多點開幾個漫畫的圖片可以發現,它的圖片地址是由不同章節和頁數來變化的,所以我們只需要替換下面的兩個數字即可完成整個漫畫的爬取。661表示話與1表示頁數
pic_url = "http://mhpic.manhualang.com/comic/D%2F%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%2F661%E8%AF%9DSM%2F1.jpg-mht.middle"

# 再觀察爬取的漫畫,發現每一話最多隻有9頁,總共有661話。所以綜上,兩個循環即可完成爬取

def scrapy():
    for index in range(1, 662):
        for num in range(1, 10):
            # 不足100話的時候需要填充爲三位數
            if index < 10:
                hua = "00" + str(index)
            else:
                hua = "0" + str(index)
            pic_url = "http://mhpic.manhualang.com/comic/D%2F%E6%96%97%E7%A0%B4%E8%8B%8D%E7%A9%B9%2F{}%E8%AF%9DSM%2F{}.jpg-mht.middle".format(hua, index)
            s = requests.get(url)
            print("正在爬取第{}話第{}張".format(hua, num))
            # 保存圖片到本地,名字爲話+頁
            with open("{}-{}.jpg".format(hua, num), "wb") as pic:
                pic.write(s.content)
            print("第{}話第{}張爬取完畢".format(hua, num))

if __name___ == "__main__":
    # 運行代碼
    scrapy()

寫在後面,這部分代碼也可以使用threading加快爬取速度

圖片轉pdf

這裏使用到了Linux下的命令convert

convert input.jpg output.pdf

本來可以直接將所有圖片轉換成一個pdf,但是由於不知名的原因,這樣轉換出來的pdf是不完整的。所以我藉助了python來調用convert逐一轉換。

import os
# 獲取當前文件夾下所有的文件,無序
pic_lst = os.listdir()
for pic in pic_lst:
    # 除去本身這個代碼
    if "jpg" in pic:
        # 調用convert
        os.system("convert {} {}".format(pic, pic[:-4] + ".pdf"))
# 這裏有一點失誤,jpg圖片和pdf文件混在了一個文件夾下,將pdf放進pdf_dir進行合成
mkdir pdf_dir && mv *.pdf pdf_dir

pdf合成

這裏使用到了pdftk,Linux下的pdf操作工具,需要額外下載

pdftk 1.pdf 2.pdf 3.pdf output.pdf

但是我不想下載這個工具,還是使用的python的第三方庫pypdf2來完成這項工作

我在github上簡單的封裝了合併pdf的代碼,直接copy下來用就行,這裏需要值得注意pdf的順序

github地址

pdf轉mobi

以上就是爬取漫畫並製作pdf過程,但是我是要放到kindle上閱讀的,所以我還需要轉換成mobi格式(據說支持更友好)。很遺憾convert轉換出來的mobi不能閱讀,藉助了calibre這個軟件。

最後,感覺還是pdf閱讀效果更好。。。QAQ

發佈了78 篇原創文章 · 獲贊 37 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章