ComicReaper

眉间皱痕 提交于 2019-12-04 02:43:50

讲真的, 手机看漫画翻页总是会手残碰到页面上的广告好吧...

要是能只需要指定一本漫画的主页URL就能给我返回整本漫画就好了...

还是使用Python来实现, 取个名字...就叫 ComicReaper(漫画收割者) 吧!

 

首先我们要获取当前漫画所有章节的标题与URL(标题用于后期存储时文件夹的命名, URL用于跳转到当前章节的开始页面)

首先是 chapterIndexReaper 函数, 主要用来"收割"当前漫画的所有章节并存储为字典列表

 

代码如下 :

 1 #获取一本漫画的所有章节的目录
 2 def chapterIndexReaper(url_host, header):
 3     # 定义一个临时字典, 用于临时存储一个章节的标题与url
 4     dic_temp = {
 5         'Title' : '',
 6         'Url' : ''
 7         }
 8     # 章节字典列表, 存储当前漫画的所有章节字典
 9     set_dic = []
10     # 构建Request对象
11     req = urllib.request.Request(url = url_host, headers = header)
12     # 读取所请求的req并用utf-8编码来进行解码, 所得到的的字符串赋值给html
13     html = urllib.request.urlopen(req).read().decode('utf-8')
14     # 爬取漫画章节标题与url的正则表达式
15     pat = r'<a class="fixed-a-es" href="(.*?)" title="(.*?)"'
16     # 使用pat在html中进行进行匹配(re.S参数是为了让"."除了能够匹配本身规定的字符,
17     # 另外也能匹配"\n"), 返回一个结果列表res
18     res = re.findall(pat, html, re.S)
19     for i in res:
20         dic_temp['Title'] = i[1]
21         dic_temp['Url'] = url_head + i[0]
22         # 向当前的章节字典列表的后面追加新的章节, 注意, 此处要使用浅拷贝
23         # (因为dic_temp是一个临时变量, 需要创建它的副本并追加到set_dic中去,
24         # 否则当dic_temp刷新时set_dic中的元素会相应发生改变)
25         set_dic.append(dic_temp.copy())
26     return set_dic

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!