Book-如果歷史是一群喵

我要看漫画!

归档

第一卷 夏商西周

回数标题
第一回华夏诞生
第二回统一战争
第三回三皇五帝
第四回大禹建国
第五回夏家天下
第六回少康复国
第七回商汤灭夏
第八回伊尹辅政
第九回武丁中兴
第十回末代商王
第十一回西周灭商
第十二回周公治国
第十三回西周东周

第二卷 春秋战国

回数标题
第十四回霸王初现
第十五回大器晚成
第十六回一鸣惊人
第十七回威震东南
第十八回吴越相争
第十九回三家分晋
第二十回商鞅变法
第二十一回六国合纵
第二十二回以横破纵
第二十三回昭王称霸
第二十四回乱世巨贾
第二十五回新王登基
第二十六回千秋一统

第三卷 秦楚两汉

回数标题
第二十七回风暴前夕
第二十八回揭竿而起
第二十九回霸王诞生
第三十回大风起兮
第三十一回双雄并立
第三十二回楚汉争雄
第三十三回吕氏专政
第三十四回文景之治
第三十五回汉武大帝
第三十六回王莽代汉
第三十七回风起绿林
第三十八回光武复国

第四卷 东汉末年

回数标题
第三十九回黄昏时刻
第四十回乱世重临
第四十一回关东联军
第四十二回逐鹿中原
第四十三回孟德崛起
第四十四回官渡对峙
第四十五回统一北方
第四十六回江东猛虎
第四十七回孙权守业
第四十八回没落贵族
第四十九回必争之地
第五十回孙刘联盟
第五十一回赤壁之战

第五卷 乱世三国

回数标题
第五十二回刘备立足
第五十三回巧取益州
第五十四回联盟破裂
第五十五回曹魏代汉
第五十六回夷陵之战
第五十七回永安托孤
第五十八回诸葛治蜀
第五十九回以攻为守
第六十回司马侍曹
第六十一回正始之变
第六十二回强弩之未
第六十三回同归于晋
第六十四回暗流涌动

第六卷 魏晋南北

回数标题
第六十五回烈烈南风
第六十六回八王之乱
第六十七回刘汉灭晋
第六十八回苻氏争雄
第六十九回淝水之战
第七十回刘裕建业
第七十一回威服八方
第七十二回仓皇北顾
第七十三回太和改制
第七十四回孝文改革
第七十五回北魏分裂
第七十六回杨氏建隋
第七十七回南北归一

第七卷 隋唐风云

回数标题
第七十八回开皇之治
第七十九回储君之争
第八十回大业难成
第八十一回潜龙在渊
第八十二回李氏崛起
第八十三回雄鹰展翅
第八十四回喋血禁门
第八十五回贞观之治
第八十六回日月临空
第八十七回武周女皇
第八十八回韦后专权
第八十九回太平公主

第八卷 盛世大唐

回数标题
第九十回先天政变
第九十一回开元之治
第九十二回边疆兵变
第九十三回卷土重来
第九十四回代宗平乱
第九十五回藩镇割据
第九十六回元和中兴
第九十七回甘露之变
第九十八回朋党之争
第九十九回黄巢起义
第一百回朱温叛变
第一百零一回盛唐终声

第九卷 五代十国

回数标题
第一百零二回后唐灭梁
第一百零三回邺都之变
第一百零四回契丹崛起
第一百零五回引狼入室
第一百零六回辽朝入主
第一百零七回后汉建立
第一百零八回郭氏开国
第一百零九回世宗革新
第一百一十回南唐兴起
第一百一十一回南北一战
第一百一十二回陈桥兵变
第一百一十三回平定四方

第十卷 宋辽金夏

回数标题
第一百一十四回宋初集权
第一百一十五回烛影斧声
第一百一十六回萧后兴辽
第一百一十七回澶渊之盟
第一百一十八回党项崛起
第一百一十九回元昊立夏
第一百二十回庆历和议
第一百二十一回熙宁变法
第一百二十二回元祐更化
第一百二十三回女真建国
第一百二十四回辽灭金兴
第一百二十五回靖康之变

第十一卷 南宋金元

回数标题
第一百二十六回尽忠报国
第一百二十七回绍兴和议
第一百二十八回海陵夺位
第一百二十九回采石之战
第一百三十回隆兴和议
第一百三十一回乾淳之治
第一百三十二回一代天骄
第一百三十三回蒙古扩张
第一百三十四回蒙古灭金
第一百三十五回端平入洛
第一百三十六回元朝建立
第一百三十七回混一天下

第十二卷 元末明初

回数标题
第一百三十八回世祖立制
第一百三十九回成宗之立
第一百四十回权臣乱政
第一百四十一回旧政更化
第一百四十二回红巾起义
第一百四十三回高邮之战
第一百四十四回察罕伐宋
第一百四十五回崛起布衣
第一百四十六回荆楚之雄
第一百四十七回略定南方
第一百四十八回统一方夏
第一百四十九回洪武之治

第十三卷 大明皇朝

回数标题
第一百五十回接班之难
第一百五十一回建文削藩
第一百五十二回靖难之役
第一百五十三回永乐大帝
第一百五十四回仁宣之治
第一百五十五回土木之变
第一百五十六回少保破敌
第一百五十七回夺门之变
第一百五十八回宪宗继业
第一百五十九回武宗驭国
第一百六十回大礼之争
第一百六十一回功业中辍

第十四卷 明末清初

回数标题
第一百六十二回威震海疆
第一百六十三回江陵权柄
第一百六十四回神宗怠政
第一百六十五回女真之叛
第一百六十六回一战定业
第一百六十七回宁远之战
第一百六十八回天启党争
第一百六十九回崇祯新政
第一百七十回十面之网
第一百七十一回崇德建清
第一百七十二回松锦之战
第一百七十三回大顺灭明

列表

{% div scroll %}

  1. 如果历史是一群喵
  2. 如果历史是一群喵 | 祖先喵们的统一战争
  3. 吃饭穿衣,竟然都是皇上教的!
  4. 他年少丧父,被迫子承父业,最后靠湿身建立了一个国家
  5. 天下都是我家哒!
  6. 跟你讲一下三千多年前的狗血剧
  7. 他进过局子,装过孙子,最后竟成了天王老子
  8. 这真的只是一段纯洁的君臣关系
  9. 让基友管家,让老婆打架,牛逼的国王就是这么奇葩
  10. 这个锅,他背了几千年....
  11. 猥琐发育,不要浪...
  12. 没想到吧!你经常梦见的男人竟然是个玛丽苏…
  13. 惹怒娘家丢江山,皆因作风不检点
  14. 奉天子以令诸侯,我说的不是曹操...
  15. 他爸追杀他,他弟也追杀他,可他成了霸主...
  16. 一个有心机的肥宅
  17. 倒霉蛋终成霸主.....可惜死于暗箭
  18. 两个纠缠不清的男人....
  19. 小弟为何突然叛变,大哥如何阴沟翻船
  20. 发家致富靠砍人...
  21. 一个靠口活横行天下的男人
  22. 秦国的阴谋
  23. 不做我的朋友休想活过今天,做了我的朋友可以活到明天
  24. 做生意这事...他才是史上最强
  25. 刺激,史上第一霸总现在上线了
  26. 举手投降了解下
  27. 到底是谁杀死了秦国
  28. 一场暴雨引发的血案
  29. sorry,他在战场上真的可以为所欲为
  30. 见过流氓创业吗
  31. 流氓打过来了
  32. 昨天你把我踢开,今天我让你狗带
  33. 我的老公是渣男
  34. 父子接力,搞死亲戚
  35. “汉族”因他而得名
  36. 明君的人设,昏君的操作
  37. 那一年,我绿了
  38. 那年,我去了趟河北,结果不得了了……
  39. 读书的果然干不过造谣的
  40. 揭竿起黄巾当立,趁虚入董卓乱国
  41. 一场团战,万万没想到,成了团建……
  42. 是奸雄还是英雄,这个争议他背了一千多年....
  43. 从太监的孙子到称霸一方的军阀,他是怎么做到的呢
  44. 从一起长大的发小,到横行天下的搭档,再到你死我活劲敌
  45. 那年基友想跨过黄河来打我......
  46. 父亲出外务工意外死亡,长子继承家业称霸一方
  47. 父兄双双早逝,单亲少年独撑家业...
  48. 乡村青年创业屡遭挫折,企业老板强留惨遭背叛
  49. 跳个槽而已,前老板竟要追杀他...
  50. 怎么办...只能迎男而上了!
  51. 一把火,改变了三个男人的命运
  52. 刘备借荆州,是怎么一回事?
  53. 君子和小人,刘备究竟是哪一个?
  54. 孙权是不是有点傻白甜?
  55. 【喵咪三国篇】大汉就这么没了 ...
  56. 【三国篇下】打完这仗,三国就算开始了~
  57. 刘备死了,凭啥让诸葛亮接班呢
  58. 诸葛亮执政是个什么水平?
  59. 诸葛亮,始终无法胜天半子
  60. 这个男人,熬死了曹操三代人……
  61. 三国里最会演戏的竟然是他...
  62. 三国就这么没了
  63. 曹刘孙这么努力,最后却亏的裤衩都不剩...
  64. 喝酒、炫富、吹牛逼,但我暂时是个好王朝...
  65. 我虽然长得丑...但我老公蠢呀...
  66. 毁掉一个王朝,只需一场家暴...
  67. 五胡十六国是怎么开始的?
  68. 八岁请家教,十二岁当将军,三十八岁就当了天王...
  69. 发生在1600多年前的一场“无间道”...
  70. 东晋就这么完蛋了...
  71. 五胡十六国是怎么结束的?
  72. 南朝实在太“南”了
  73. 发生在北魏的大女主剧
  74. 北魏汉化组登场
  75. 在北魏,最不值钱的可能是皇帝……
  76. 离南北朝结束还差这一个男人
  77. 南北朝就这么结束了
  78. 隋文帝,这个出道即巅峰的男人
  79. 论一个演员的自我修养
  80. 如果隋朝时有劳动节,那劳动者最怕的就是他……
  81. 影帝的表哥,也是个影帝……
  82. 怂一时风平浪静,绕一步天下我有
  83. 李世民登场!
  84. 李世民的坎坷斗争路
  85. 都是摆摊,为啥李世民能用“烂摊子”发财致富?
  86. 要说乘风破浪的姐姐们,她绝对算一个~
  87. 爬最高的山...杀最亲的崽...最后她得到了想要的一切
  88. 她抄作业,终究抄成了自己最讨厌的人...
  89. 人气高业务棒,实力女主硬邦邦
  90. 唐玄宗登场!姑侄之间的对决!
  91. 大唐盛世,基本就是从这开始的~
  92. 大唐历史上最著名的胖子,没有之一
  93. 前后脚遇到两个大忽悠,唐朝真是头都大了...
  94. 唐朝八年的叛乱,终于被这个猛男结束了
  95. 为什么说男人的嘴骗人的鬼,看看大唐你就懂了......
  96. 大唐它又行了...
  97. 老太监,不讲武德,这样不好...
  98. 彻底压垮唐朝的,是一场对家之间的战争...
  99. 历史不断证明,千万不要惹落榜考生...
  100. 我们100话啦!大唐也快完蛋啦~
  101. 这下大唐真的完蛋了...
  102. 大唐完蛋了,五代十国开始了~
  103. 半路被抓去当皇帝是啥感受?
  104. 炎帝后裔、太阳转世、来自北境的契丹之王!
  105. 他因一己私利,将国家推入深渊...
  106. 当会打仗的吃饱了,末日也就到了
  107. 我愿称之为偷塔之王
  108. 他认真打仗,到头全家被端,只能造反当皇帝了
  109. 这应该是五代里最完美的崽了
  110. 五代都讲了,十国又是怎样的呢?
  111. 拳打南唐美男子,脚踹契丹辽睡王,他真是五代皇帝中的一股清流...
  112. 宋朝开始了~
  113. 五代十国篇结束~咱们下季再见~
  114. 历史喵第十季开更啦!
  115. 那天夜里,他们兄弟俩在屋里发生了什么呢?
  116. 这绝对是辽朝的大女主剧...
  117. 本来想欺负孤儿寡母的,没想到对面是个女王大人...
  118. 大宋又双叒因为想占便宜而翻车了...
  119. 大三角!修罗场!最后结局竟是…
  120. 虽然委屈,但大宋又又又跟人和解了....
  121. 王安石变法
  122. 你相信光吗?反正王安石应该是不信的....
  123. 宋辽夏一起摆烂,结果来了个新家伙…
  124. 70万对2万,优势在我,怎么可能输?
  125. 摊上这样一对父子,大宋南了...
  126. 南宋最强的崽登场!
  127. 南宋最强的崽...也救不了南宋啊...
  128. 我想当个好皇帝,但手握男主剧本的是我堂弟...
  129. 本来只是去劳军,却不小心打了胜仗?
  130. 想挺起腰杆子,可惜实力还是不够啊
  131. 打架打不过,只能拼一些内力…
  132. 一代天骄登场!
  133. 你知道成吉思汗有多强悍吗!
  134. 南宋:老子终于报仇了!
  135. 南宋收复中原了!但…又好像没收…
  136. 建立元朝的那个男人,他来了…….
  137. 南宋结束,大元一统
  138. 《元末明初》篇开更!
  139. 皇位谁来坐?别急先开个会
  140. 怎样形容一个权臣的势力大呢?200多个字的头衔!
  141. 能文能武的富二代,大义灭亲打工仔...
  142. 元朝治好了黄河,却冲走了自己
  143. 大元:教科书式的亡国之君出现了
  144. 元朝的危机解除了,但又似乎没有解除...
  145. 元朝最不该惹的就是这个乞丐
  146. 事实证明,卖鱼的都惹不起啊!
  147. 火烧连环船!这说的可不是赤壁之战
  148. 大元谢幕,大明登场!
  149. 明朝的开局,是地狱难度的
  150. 史上最强太子,就是命太短…
  151. 我只是想把位子坐稳,叔叔们吃点苦怎么啦?
  152. 以一府抗一国,史上最强藩王!
  153. 大明最猛皇帝,天子守国门!
  154. 大明圣孙,明朝文武双全型王者
  155. 大明帝六代,如何一战成名?
  156. 受命于危难之际!为大明续命近两百年!
  157. 几百年前的月圆之夜,他和皇位“团圆” 了
  158. 有个乱糟糟的爹,接手一个乱糟糟的天下...
  159. 他明明拥有天下,却似乎更向往自由...
  160. 本以为扶上位的是个傀儡,没想到是个祖宗……
  161. 说好的宫斗爽剧,怎么就成了修仙模拟器?
  162. 传奇名将登场!戚继光为啥这么猛?
  163. 大明第一首辅,救世宰相的铁血改革路!
  164. 孩子管太紧,长大了可能报复性消费...
  165. 东北“王子”复仇记,女真再次登场!
  166. 后金对大明,萨尔浒之战!
  167. 宁远之战!努尔哈赤的滑铁卢
  168. 江山什么的...哪有木工有趣呀...
  169. 好消息:阉党没了!坏消息:大明也快没了
  170. 仗打赢了,但大明的时间也不多了…
  171. 大明已读不回,贵二代趁机爆改!
  172. 明朝最后的豪赌!赌输了...
  173. 放牛娃建立起的皇朝,被放羊娃给灭了
  174. 从孤儿到最强亲王,小王子的翻身之路
  175. 进了京之后,大顺就开始不顺了
  176. 一个月换俩老板是啥体验?
  177. 明末义军领袖,除了快递员,还有个转业的……
  178. 这个皇帝实习期有点长...
  179. 鳌拜:我全都要!康熙:拿来吧你!
  180. 康熙:我要打三个!
  181. 什么是真正的狠人?是61年每天早起...
  182. 夺嫡大舞台!有种你就来!
  183. 雍正:看我怎么用“不争”赢得胜利!
  184. 虽然工龄短,但工作量大呀!

{% enddiv %}

输出

爬虫

将上述的网址存到一个列表中:

python
import re
 
# 给定的 Markdown 文本
markdown_text = """
1. [如果历史是一群喵](https://mp.weixin.qq.com/s/WVwlW3bhcirBSn2KjsMEYA)
2. [如果历史是一群喵 | 祖先喵们的统一战争](https://mp.weixin.qq.com/s/HwkfqalZD7Ugvpt5lcPyuQ)
3. [吃饭穿衣,竟然都是皇上教的!](https://mp.weixin.qq.com/s/MRvf9c2_8RPX8ouSaNiP1Q)
4. [他年少丧父,被迫子承父业,最后靠湿身建立了一个国家](https://mp.weixin.qq.com/s/l-nWXU45sku88ML4NCjn7Q)
5. [天下都是我家哒!](https://mp.weixin.qq.com/s/PVl-eHCmZSMHLQhm_pRAvw)
6. [跟你讲一下三千多年前的狗血剧](https://mp.weixin.qq.com/s/VoNhyDXoy8Yg-cBCzDcdzg)
...
"""
 
# 使用正则表达式提取所有 URL
urls = re.findall(r'\[.*?\]\((https?://[^\s]+)\)', markdown_text)

利用Python爬取公众号上的图片(附源码) 抄一个代码!然后一阵暴改!

python
from tqdm import tqdm
import requests  
from bs4 import BeautifulSoup
import time
import random
import os
 
headers = {
    'cookie':'pgv_pvid=6670082751; RK=WMxp6iw+3H; ptcz=831e2d5114bbf9b46ee7956fedb62717ee910417ecd992f3e0027f034213caf1; o_cookie=2925851543; pac_uid=1_2925851543; iip=0; tvfe_boss_uuid=94828b35f56c4131; LW_uid=01d6E8a1d0T8Y6S87134I123O2; eas_sid=J116c8t1G078b6f8N1u4m24059; LW_sid=6166y891k1d2s4h7v9M5A8K6e8; rewardsn=; wxtokenkey=777; wwapp.vid=; wwapp.cst=; wwapp.deviceid=',
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 Edg/112.0.1722.48'
}
 
index = 0
 
for url in urls:
    index += 1
    print("第 " + str(index) + ' 章')
    try:
        response = requests.get(url, headers=headers)
        # print(response.status_code)  # 打印响应状态码
        # 获取网页数据
        html = response.text
 
        soup = BeautifulSoup(html, 'html.parser')
        img_list = soup.find_all('img')
    except Exception as e:
        print(f"{index}:错误 - {str(e)}")
 
    for img_url in tqdm(img_list):
        try:
            name = str(img_list.index(img_url))
            # print(img_url)
            img_link = img_url.get('data-src')
            if img_link != None:
                # print(img_link)
                response2 = requests.get(img_link)
                # 图片是二进制数据,获取要用content,文本文件用text
                img_content = response2.content
                # 设置休眠时间,防止速度过快被封
                time.sleep(random.uniform(3, 5))
                # 保存文件
                folder_path = './如果历史是一群喵/' + '第 '+ str(index) + ' 章'
                if not os.path.exists(folder_path):
                    # 如果文件夹不存在,则创建它
                    os.makedirs(folder_path)
                with open(folder_path + '/' + name + '.' + img_link.split('=')[-1],'wb+') as f:
                     f.write(img_content)
                     f.close()
                     # print(f'第 {name} 张图片下载成功')
        except Exception as e:
            print('第 '+ str(index) + ' 章:错误:' + str(e))

格式化

这里手工洗了一下数据,把部分章节开头的 .gif 图片替换成了 .jpeg 的格式,162 章后的文件名后缀有问题,也进行了修改。

python
import os
 
def rename_files_in_folder(folder_path):
    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        # 获取完整文件路径
        old_file = os.path.join(folder_path, filename)
        
        if os.path.isfile(old_file):
            # 如果文件后缀是 .appmsg,改为 .jpeg
            if filename.endswith('.appmsg'):
                new_file = os.path.join(folder_path, filename.replace('.appmsg', '.jpeg'))
                os.rename(old_file, new_file)
            
            # 如果文件后缀是 .1,改为 .gif
            elif filename.endswith('.1'):
                new_file = os.path.join(folder_path, filename.replace('.1', '.gif'))
                os.rename(old_file, new_file)
 
# 使用示例
folder_path = r'./如果历史是一群喵/第 184 章'  # 替换为目标文件夹的路径
rename_files_in_folder(folder_path)

将爬虫得到的各个图片四周填充白色,使其长宽比与 A4 纸大小一致:

python
import os
import re
from tqdm import tqdm
from PIL import Image
 
load_path = "./如果历史是一群喵"
save_path = "./如果历史是一群喵 resized"
 
# A4 纵向尺寸在 72 DPI 下的像素大小
A4_width = 595
A4_height = 840
A4_aspect_ratio = A4_width / A4_height
 
item_list = os.listdir(load_path)
item_list.sort(key=lambda x: int(re.search(r'第 (\d+) 章', x).group(1)))
 
# 遍历顶层子文件夹
for item in item_list:
    item_path = os.path.join(load_path, item)
    print(item)
    if os.path.isdir(item_path):
        # 自定义排序函数,提取文件名中的数字部分并按数字排序
        file_list = os.listdir(item_path)
        file_list.sort(key=lambda x: int(re.match(r"(\d+)", x).group(0)))
        # 找到第一个后缀不是 '.jpeg' 的文件,移除该元素及之后的所有元素
        for i, file in enumerate(file_list):
            if not file.endswith('.jpeg'):
                file_list = file_list[:i]  # 切片操作,保留列表中 i 之前的元素
                break
        # 创建一个 pdf 对象
        pdf = FPDF()
        for image_file in tqdm(file_list):
            image = Image.open(os.path.join(item_path, image_file))
            # 获取原始图片的宽度和高度
            original_width, original_height = image.size
 
            # 计算新尺寸比例,保持宽高比不变
            aspect_ratio = original_width / original_height
            
            # 根据宽高比决定如何调整图片
            if aspect_ratio > A4_aspect_ratio:
                # 图片宽度超出比例限制,调整宽度为 A4 宽度,计算高度
                new_width = A4_width
                new_height = int(new_width / aspect_ratio)
            else:
                # 图片高度超出比例限制,调整高度为 A4 高度,计算宽度
                new_height = A4_height
                new_width = int(new_height * aspect_ratio)
 
            # 调整图片大小
            resized_image = image.resize((new_width, new_height))
 
            # 创建一个白色的 A4 背景图像
            background = Image.new('RGB', (A4_width, A4_height), (255, 255, 255))
            # 计算将图片居中放置在 A4 背景中的位置
            left = (A4_width - new_width) // 2
            top = (A4_height - new_height) // 2
 
            # 将调整后的图片粘贴到背景图像上
            background.paste(resized_image, (left, top))
            # 获取图片的宽度和高度
            width, height = background.size
            
            folder_path = os.path.join(os.path.join(save_path, item))
            if not os.path.exists(folder_path):
                # 如果文件夹不存在,则创建它
                os.makedirs(folder_path)
            background.save(os.path.join(folder_path, image_file), format="JPEG", quality=80)

输出 pdf

将上述图片输出成 pdf:

python
from fpdf import FPDF
import re
import os
from tqdm import tqdm
 
load_path = './如果历史是一群喵 resized/'
save_path = './如果历史是一群喵 pdf/'
 
# 将图像文件转换为 PDF
def images_to_pdf(image_paths, output_pdf_path):
    pdf = FPDF()
    image_paths.sort(key=lambda x: int(re.search(r'(\d+)\.jpeg', x).group(1)))
    # 遍历所有图像文件
    for image_path in image_paths:
        # 添加新的一页
        pdf.add_page()
        # 插入图片,设置为 A4 尺寸的图像(宽度 210mm,高度 297mm)
        pdf.image(image_path, x=0, y=0, w=210, h=297)
    
    # 输出 PDF 文件
    pdf.output(output_pdf_path)
 
for folder in tqdm(os.listdir(load_path)):
    image_folder = os.path.join(load_path, folder)
    image_paths = [os.path.join(image_folder, f) for f in os.listdir(image_folder)]
 
    output_pdf_path = os.path.join(save_path, folder + '.pdf')  # 输出 PDF 的路径
    images_to_pdf(image_paths, output_pdf_path)

得到最终文件:如果历史是一群喵 pdf_免费高速下载|百度网盘-分享无限制