申明:这篇博文纯属用来技术分享,如他人利用博文内容来获取商业利益均与本人无关!
之前刚入门爬虫的时候,为了练手去爬了爱漫画网,那时候被它虐的不要不要的,后面搞了几天,东西是能爬到了,但是速度实在太慢了,就放弃了。 这两天一时兴起,又去二战了爱漫画网。结果圆满成功!代码我已经上传到github,地址:https://github.com/ant-chow/ComicCrawl.git 。话不多说,先分享一下成果^-^
先说一下环境,我是用的python,也没用什么爬虫框架,就用了urllib2来请求,beautifulsoup用来解析,这两个包相信大家都会用,不多说。
大体思路:指定一部漫画->直接请求获取所有章节url->对所有章节遍历,获取该章节的所有图片地址(需要想办法)->直接请求图片地址获取图片->保存图片到本地
单纯的讲概念可能有点抽象,我就拿爱漫画首页推的“斗破苍穹”这部漫画来当例子讲一下爬取方法吧:
首先爱漫画网如果你只是单纯的请求的话,能请求到内容,但是只能请求到一些没用的页面内容,它页面的有关漫画的内容如漫画图片等等都是进过封装的。例如你直接请求斗破苍穹的首页:http://www.iimanhua.com/imanhua/doupocang/ 可以请求到所有内容(这为我们后面爬漫画减少了难度,因为可以直接请求到所有的章节对应的url)。但是请求任意一个章节的页面如http://www.iimanhua.com/imanhua/9773/370695.html:时,麻烦就来了,这个章节有多少页直接请求不到,因为页数是用js动态加载的;请求不到多少页,就不能保证请求到所有图片,因为一页只有一张图片。而且就算知道有多少页的话,一页一页的去请求来获取图片的url,然后还要去请求图片的url来获取图片,这样很耗时。
一步一步来,先请求斗破苍穹首页:
basic_url = u'http://www.iimanhua.com/imanhua/doupocang/'
# 控制请求次数,超过3次就放弃请求
retry_count = 0
while retry_count < 3:
tr