文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python selenium爬取kuk

2023-01-31 05:56

关注

在爬取这个网站之前,试过爬取其他网站的漫画,但是发现有很多反爬虫的限制,有的图片后面加了动态参数,每秒都会更新,所以前一秒爬取的图片链接到一下秒就会失效了,还有的是图片地址不变,但是访问次数频繁的话会返回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秒了等待时间,刚开始运行时间会稍微有点长,需要等待。

运行过程如图所示

wKiom1ll3wuB477ZAAFK8HMWBlM829.jpg-wh_50

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯