用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

你可能感兴趣的:(用Python爬取漫画并转换格式为pdf和mobi)