#coding:utf-8import sys               #用于设置默认编码from selenium import webdriver            #用于进行网页元素定位import re #正则表达式import os #用于操作文件夹import urllib #用于下载图片import time #用于暂停import csv

def getinfo(url): #获取下载信息列表 driver = webdriver.Firefox(firefox_options=options) driver.get(url) #打开网站 links_all = driver.find_elements_by_tag_name("a") #寻找所有链接 links_rexue = [] #创建链接列表 name_rexue = [] #创建名称列表 i = str(0) img_Num = str(0) error1 = [] error2 = [] download_continue = "" page_number = str(1)for link in links_all:try:if str("Vol") in link.text: #判断是否想要的链接 links_rexue.append(link.get_attribute("href")) #加入到链接列表 name_rexue.append(link.text.encode("gbk")) #加入到名称列表 except:pass driver.close() dataFile = open("progress_list","wb") dataWrite = csv.writer(dataFile) dataWrite.writerow(links_rexue) dataWrite.writerow(name_rexue) dataWrite.writerow(i) dataWrite.writerow(img_Num) dataWrite.writerow(error1) dataWrite.writerow(error2) dataWrite.writerow(download_continue) dataWrite.writerow(page_number) dataFile.close()return links_rexue,name_rexue,i,img_Num,error1,error2,download_continue,page_number

def get_img(url_start):global links_rexueglobal name_rexueglobal xglobal img_Numglobal error1global error2global page_number link_start = str(url_start)while True:try: restart = 1 while restart < 10:try: driver.get(link_start) #打开网页 key = re.compile("http.*?(jpg|JPG)") #定义图片的正则表达式 img = key.search(driver.page_source).group(0) #获取图片的链接 urllib.urlretrieve(img, os.getcwd() + "\\" + name_rexue[x] + "\\" + str(page_number) + ".jpg") #下载图片 break except:print("重新下载:" + link_start) restart += 1 if restart == 11: driver.get(link_start) #打开网页 key = re.compile("http.*?(jpg|JPG)") #定义图片的正则表达式 img = key.search(driver.page_source).group(0) #获取图片的链接 urllib.urlretrieve(img, os.getcwd() + "\\" + name_rexue[x] + "\\" + str(page_number) + ".jpg") #下载图片 img_Num += 1 page_number += 1 print(img + ".......ok!") dataFile = open("progress_list","wb") dataWrite = csv.writer(dataFile) dataWrite.writerow(links_rexue) dataWrite.writerow(name_rexue) dataWrite.writerow([str(x)]) dataWrite.writerow([str(img_Num)]) dataWrite.writerow(error1) dataWrite.writerow(error2) dataWrite.writerow([link_start]) dataWrite.writerow([str(page_number)]) dataFile.close()#time.sleep(1) #休息1秒 except:print("error1:" + link_start) #出错则显示在哪个链接出错 page_number += 1 error1.append(link_start)

try:if "bbs" in driver.find_elements_by_xpath(".//*[@href]")[3].get_attribute("href"): #判断是否第二页,第二页的下一页链接在找到的第5个元素 if "exit.htm" not in driver.find_elements_by_xpath(".//*[@href]")[4].get_attribute("href"): #判断是否最后一页 link_next = driver.find_elements_by_xpath(".//*[@href]")[4].get_attribute("href") #为下个链接赋值 else:break #跳出循环,读取下一集 else: link_next = driver.find_elements_by_xpath(".//*[@href]")[3].get_attribute("href") #第一页直接赋值

 if link_next != link_start: link_start = link_nextelse:break except:print("error2:" + link_start) error2.append(link_start)

options = webdriver.FirefoxOptions() #加载firefox浏览器实例options.set_headless() #设置为无窗体模式url = "http://comic.kukudm.com/comiclist/380/index.htm"

if os.path.isfile("progress_list"): dataFile = open("progress_list") dataReader = csv.reader(dataFile) data = list(dataReader) links_rexue = data[0] #创建链接列表 name_rexue = data[1] #创建名称列表 i = int(data[2][0]) img_Num = int(data[3][0]) error1 = data[4] error2 = data[5] download_continue = data[6][0] page_number = int(data[7][0]) dataFile.close() print("loading progress_list.......") x = 0 for link in links_rexue: if x == i: if os.path.isdir(name_rexue[x]): #判断是否存在文件夹,不存在则创建 print("Folder is existence") else: os.mkdir(name_rexue[x]) print("New Folder:" + name_rexue[x]) page_number -= 1 driver = webdriver.Firefox(firefox_options=options) driver.implicitly_wait(30) get_img(download_continue) driver.close() elif x > i: page_number = 1 if os.path.isdir(name_rexue[x]): #判断是否存在文件夹,不存在则创建 print("Folder is existence") else: os.mkdir(name_rexue[x]) print("New Folder:" + name_rexue[x]) driver = webdriver.Firefox(firefox_options=options) driver.implicitly_wait(30) get_img(link) driver.close() x += 1else: downloadList = getinfo(url) links_rexue = downloadList[0] #创建链接列表 name_rexue = downloadList[1] #创建名称列表 x = int(downloadList[2]) img_Num = int(downloadList[3]) error1 = downloadList[4] error2 = downloadList[5] download_continue = downloadList[6] page_number = int(downloadList[7]) print("set up progress_list.......") for link in links_rexue: if os.path.isdir(name_rexue[x]): #判断是否存在文件夹,不存在则创建 print("Folder is existence") else: os.mkdir(name_rexue[x]) print("New Folder:" + name_rexue[x]) driver = webdriver.Firefox(firefox_options=options) driver.implicitly_wait(30) get_img(link) driver.close()dataFile = open("finish_info","wb")dataWrite = csv.writer(dataFile)dataWrite.writerow([str(img_Num)])dataWrite.writerow(error1)dataWrite.writerow(error2)dataFile.close()os.remove("progress_list")print("==========================finish download=========================")print("download:" + str(img_Num))print("error1:" + str(error1))print("error2:" + str(error2))

转载于:https://www.cnblogs.com/kylechen/p/8557419.html

爬kuku漫画网站的小爬虫相关推荐

  1. js rsa解密中文乱码_python解析JS爬取漫画网站--动态爬虫

    我前两天无聊,鬼灭之刃第一季完结了,我暂时没啥动漫看,就想着看看鬼灭之刃的漫画,找了半天,找一个叫漫画堆的网站 鬼灭之刃​www.manhuadui.com 网页版的还可以,但是我当时拿手机在看,翻一 ...

  2. 爬取漫画网站漫画(爬虫学习)

    共实现两个网站,漫画栈处于完成品状态,最近没空做了,写个博客记录一下. 第一步,导入库: import json import os from time import sleepimport requ ...

  3. python爬取web漫画网站_[Python爬虫学习]利用selenuim爬取漫画网站

    注意事项 版本 Python版本为 Python-3.8.3 系统为 Windows10 浏览器为 Firefox-77.0 前置 \(selenium\) \(BeautifulSoup\) \(r ...

  4. Python爬虫:基于Scrapy的爬取失踪人口数据小爬虫

    Scrapy简介: Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 ...

  5. python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬

    Python爬虫,爬取58租房数据 这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息.因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完. 项目演示 ...

  6. 常见的反爬虫技术有哪些?如何防止别人爬自己的网站?

    搜索引擎可以通过爬虫抓取网页信息,同时也有很多企业通过爬虫获取其他平台的信息用于数据分析或者内容优化,但是对于自身网站有些页面或者信息并不希望被爬虫抓取,那我们如何来实现反爬虫技术呢?如何防止别人爬自 ...

  7. Python日记——柿子要捡软的捏,记第一只小爬虫

    2017.12.19 阅读了<零基础入门学习Python>一书第14章"论一只爬虫的自我修养"之后总想跃跃欲试实现一只自己的小爬虫,但可惜的是,或许因为这本书的读者太多 ...

  8. java爬取网页数据_Python网络爬虫实战(二)数据解析

    Python网络爬虫实战 (二)数据解析 本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站 ...

  9. 爬虫实战:过年你被催婚啦吗?爬取相亲网站,看看当下年轻小姐姐的择偶观。

    前言 到了一定年龄,父母可能会催你找女朋友,结婚. 大多数的父母催婚,是父母渐渐老了,想让你找个人照顾你,有热饭吃,生病了有人照顾.在外面不被人欺负. 当然,也有一部分来自周围人的压力,跟你同龄的孩子 ...

  10. 简单的小爬虫-漫画爬取

      好久没写代码了,快毕业了天天闲着玩游戏刷视频,最近刷七原罪这部动漫的时候,感觉动漫更新太慢,就去追漫画,于是为了方便观看避免广告的干扰,就写了个小爬虫,顺便练习练习python-   由于目前七原 ...

最新文章

  1. “深度学习不能拿来乱用”,Nature论文引发激烈争论
  2. ResizeObserver - 元素resize监听API
  3. 19、修改和删除事件(ALTER/DROP EVENT)
  4. cdh 添加jar包_使用maven下载cdh版本的大数据jar包
  5. Springboot @Value获取配置文件中的值失效
  6. C语言---输出三角形字符阵列
  7. 苹果系统是通过服务器推送消息,客户端技术:一文带你了解iOS消息推送机制
  8. 一切成功源于积累——20140928 认识货币——瑞士法郎
  9. VB6银联读卡之旅(二)__55域获取流程及相关注意
  10. 计算机视觉作业(二)Local Feature Matching
  11. 使用web设计器制作图表报表
  12. python3读取excel汉字_从excel文件python3读取汉字
  13. 世纪安图参加2014地理信息开发者大会
  14. 华为天才少年稚晖君自制硬萌机器人,开源 5 天,GitHub 收获 2900 星!
  15. finereport与finebi差别_finebi和finereport区别
  16. 搜索问题之状态空间搜索(状态压缩+记忆化搜索+ BFS)
  17. html代码设置五边形,javascript怎么画正五边形?
  18. 手机网页唤起uniapp
  19. 期货反向跟单—探讨个问题
  20. NVIDIA VPI -1

热门文章

  1. 白话搭建一个简单的微服系统
  2. Exception in thread main java.lang.UnsupportedClassVersionError: Bad version number in .class file
  3. 8、饼图(ax.pie)
  4. 几种降维思想方法总结
  5. Java join()原理分析
  6. 设某链表中最常用的操作是在链表的尾部_面试官:“双向链表”都不会,谁给你跳槽的勇气?...
  7. python中while true的用法_python入门:while循环里面True和False的作用,真和假
  8. C++ TBB 文档手册地址
  9. Hyperledger Fabric教程(1)--Hyperledger Fabric 老版本 1.1.0 快速部署安装
  10. mysql怎么查合计_mysql-查询不同列的数量合计