工具
- Python3
- requests
- pypdf2
- Linux
- convert
- pdftk
- calibre,電子書格式轉換神器
漫畫爬取
這一部分使用Python
代碼完成
第三方庫:
requests
、bs4
# 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的順序
pdf轉mobi
以上就是爬取漫畫並製作pdf過程,但是我是要放到kindle上閱讀的,所以我還需要轉換成mobi
格式(據說支持更友好)。很遺憾convert轉換出來的mobi不能閱讀,藉助了calibre
這個軟件。
最後,感覺還是pdf閱讀效果更好。。。QAQ