时间:2021-05-22
这篇文章主要介绍了基于Python实现ComicReaper漫画自动爬取脚本过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
讲真的, 手机看漫画翻页总是会手残碰到页面上的广告好吧...
要是能只需要指定一本漫画的主页URL就能给我返回整本漫画就好了...
这促使我产生了使用Python 3来实现, 做一个 ComicReaper(漫画收割者) 的想法!
本文所用漫画链接 :http:///manhua/2317'header = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Referer' : '' }
获取章节目录
首先我们对我们接下来要做的事情做一个具体流程分析
我们要获取当前漫画所有章节的标题与URL(标题用于后期存储时文件夹的命名, URL用于跳转到当前章节的开始页面)并且存储在列表中
将会使用到Python的两个库, re 与 urllib
import re # 导入正则表达式 import urllib.request # 导入 urllib.request对在浏览器中按下 [F12] 键打开开发者工具来对漫画的章节页面进行分析
我们可以看到页面中有很多章节, 也就是章节跳转链接, 每个链接的<a>标签中正好具有我们需要的标题和URL, 分别是<a>标签的 title 属性与 href 属性, 我们将使用字典来存储它
先不慌着前进, 考虑到整个HTML中有非常多的链接, 那么也就意味着页面中具有大量的<a>标签, 如果我们只是单纯地从HTML中过滤出<a>标签, 这样我们会得到大量我们并不需要的<a>标签, 这是不明智的, 我们必须只过滤出章节跳转链接的<a>标签, 仔细观察, 发现章节跳转链接的<a>标签们都具有一个特点, 那就是它们都具有 class 属性并且属性值为 "fixed-a-es" , 这就找到了一个可以定位章节<a>标签的依据, 把这一点加入到我们的正则表达式的匹配规则中去
现在就可以定义一个正则表达式匹配字符串了:
pat = r'<a class="fixed-a-es" href="(.*?)" rel="external nofollow" rel="external nofollow" title="(.*?)"'为什么要这么写 :
使用这个正则表达式, 就可以匹配到 title 属性与 href 属性的属性值中的双引号里面的内容了
具体实现是 chapterIndexReaper 函数, 主要用来"收割"当前漫画的所有章节并存储为字典列表
代码如下 :
#获取一本漫画的所有章节的目录def chapterIndexReaper(url_host, header): # 定义一个临时字典, 用于临时存储一个章节的标题与url dic_temp = { 'Title' : '', 'Url' : '' } # 章节字典列表, 存储当前漫画的所有章节字典 set_dic = [] # 构建Request对象 req = urllib.request.Request(url = url_host, headers = header) # 读取所请求的req并用utf-8编码来进行解码, 所得到的的字符串赋值给html html = urllib.request.urlopen(req).read().decode('utf-8') # 爬取漫画章节标题与url的正则表达式 pat = r'<a class="fixed-a-es" href="(.*?)" rel="external nofollow" rel="external nofollow" title="(.*?)"' # 使用pat在html中进行进行匹配(re.S参数是为了让"."除了能够匹配本身规定的字符, # 另外也能匹配"\n"), 返回一个结果列表res res = re.findall(pat, html, re.S) for i in res: dic_temp['Title'] = i[1] dic_temp['Url'] = url_head + i[0] # 向当前的章节字典列表的后面追加新的章节, 注意, 此处要使用浅拷贝 # (因为dic_temp是一个临时变量, 需要创建它的副本并追加到set_dic中去, # 否则当dic_temp刷新时set_dic中的元素会相应发生改变) set_dic.append(dic_temp.copy()) return set_dic以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
之前写了个python脚本用selenium+phantomjs爬新帖子,在循环拉取页面的过程中,phantomjs总是block住,使用WebDriverWa
本文我们来看一下如何使用Python将QQ好友头像拼成“五一快乐”四个字。我们可以将整个实现过程分为两步:爬取QQ好友头像、利用好友头像生成文字。爬取头像爬取Q
前言此次的目标是爬取指定城市的天气预报信息,然后再用Python发送邮件到指定的邮箱。下面话不多说了,来一起看看详细的实现过程吧一、爬取天气预报1、首先是爬取天
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用BeautifulSoup对爬取的页面进行解析,提取出所有的URL
在使用python爬取网站信息时,查看爬取完后的数据发现,数据并没有被爬取下来,这是因为网站中有UA这种请求载体的身份标识,如果不是基于某一款浏览器爬取则是不正