python爬取付费漫画_python selenium爬取kuku漫画

在爬取这个网站之前,试过爬取其他网站的漫画,但是发现有很多反爬虫的限制,有的图片后面加了动态参数,每秒都会更新,所以前一秒爬取的图片链接到一下秒就会失效了,还有的是图片地址不变,但是访问次数频繁的话会返回403,终于找到一个没有限制的漫画网站,演示一下selenium爬虫# -*- coding:utf-8 -*-

# crawl kuku漫画

__author__='fengzhankui'

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

import os

import urllib2

import chrom

class getManhua(object):

def __init__(self):

self.num=5

self.starturl='http://comic.kukudm.com/comiclist/2154/51850/1.htm'

self.browser=self.getBrowser()

self.getPic(self.browser)

def getBrowser(self):

dcap = dict(DesiredCapabilities.PHANTOMJS)

dcap["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36")

browser=webdriver.PhantomJS(desired_capabilities=dcap)

try:

browser.get(self.starturl)

except:

print 'open url fail'

browser.implicitly_wait(20)

return browser

def getPic(self,browser):

cartoonTitle = browser.title.split('_')[0]

self.createDir(cartoonTitle)

os.chdir(cartoonTitle)

for i in range(1,self.num):

i=str(i)

imgurl = browser.find_element_by_tag_name('img').get_attribute('src')

print imgurl

with open('page'+i+'.jpg','wb') as fp:

agent = chrom.pcUserAgent.get('Firefox 4.0.1 - Windows')

request=urllib2.Request(imgurl)

request.add_header(agent.split(':',1)[0],agent.split(':',1)[0])

response=urllib2.urlopen(request)

fp.write(response.read())

print 'page'+i+'success'

NextTag = browser.find_elements_by_tag_name('a')[-1].get_attribute('href')

browser.get(NextTag)

browser.implicitly_wait(20)

def createDir(self,cartoonTitle):

if os.path.exists(cartoonTitle):

print 'exists'

else:

os.mkdir(cartoonTitle)

if __name__=='__main__':

getManhua()

对了应对反爬虫的机制,我在selenium和urllib2分别加了请求参数,反正网站通过过滤请求的方式将爬虫过滤掉,在这里仅爬取了开始url往下的5页,而且为了防止图片和网络延时,设置20秒了等待时间,刚开始运行时间会稍微有点长,需要等待。

运行过程如图所示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值