这个爪巴虫还是有很多bug,有些图片超时后就没下载下来,导致每一刊都少了几页 o(╥﹏╥)o

暂时把第1版贴在这,准备升级爪巴虫2.0

import requests
from bs4 import BeautifulSoup
import threading
from lxml import etree
import urllib
from urllib import request, error
import os
import re
from queue import Queue
import traceback
import socket
import timeroot = 'https://manhua.fzdm.com/39/'global num_thread
num_thread = 0class Producer(threading.Thread):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}def __init__(self, url_queue, img_queue, *args,**kwargs):super(Producer, self).__init__(*args,**kwargs)global num_threadself.url_queue = url_queueself.img_queue = img_queueself.id = num_threadnum_thread += 1def run(self):while True:if self.url_queue.empty():print('Producer No.{}\t bye'.format(self.id))breakurl = self.url_queue.get()try:html = requests.get(url,headers=self.headers)raw = html.textimg = re.findall('mhurl="(.*?jpg)"', raw)if len(img) > 0:prefix = 'http://p1.manhuapan.com/'if int(img[0].split('/')[0]) < 2016:prefix = 'http://p5.manhuapan.com/'img = prefix + img[0]path = os.path.join('巨人', url.split('/')[-2] , url.split('.')[-2].split('_')[-1] + '.jpg')self.img_queue.put((img, path))except Exception as e:traceback.print_exc()print('Producer No.{}\t bye'.format(self.id))breakclass Consumer(threading.Thread):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}def __init__(self, url_queue, *args,**kwargs):super(Consumer, self).__init__(*args,**kwargs)global num_threadself.url_queue = url_queueself.id = num_threadnum_thread += 1def run(self):while True:if self.url_queue.empty():print('Consumer thread \t{}\t bye'.format(self.id))breakprint('剩余:', url_queue.qsize())url, path = self.url_queue.get()try:req = request.Request(url, headers=self.headers)response = request.urlopen(req, timeout=3)with open(path, 'wb') as f_save:f_save.write(response.read())f_save.flush()f_save.close()except urllib.error.URLError as error:if isinstance(error.reason, socket.timeout):print('socket timed out - URL:', url)self.url_queue.put((url, path))print('Consumer thread \t{}\t bye'.format(self.id))breakelse:traceback.print_exc()time.sleep(0.5)html = requests.get('https://manhua.fzdm.com/39/').text
chapters = re.findall('<li class="pure-u-1-2 pure-u-lg-1-4"><a href="(.*?)[/]+" title="进击的巨人', html)urls = []
for i in chapters:for j in range(100):u = root + i + '/index_' + str(j) + '.html'urls.append(u)for i in chapters:diry = '巨人/'+iif not os.path.exists(diry):os.makedirs(diry)N = len(urls)
N_threads = 1000
url_queue = Queue(N)
img_queue = Queue(N)
for u in urls:url_queue.put(u)producers = []
for x in range(N_threads):t = Producer(url_queue, img_queue)producers.append(t)t.start()consumers = []
for x in range(N_threads):t = Consumer(img_queue)consumers.append(t)t.start()for w in producers:w.join()for w in consumers:w.join()print('finish')

多线程爪巴虫下载进击的巨人 v.1相关推荐

  1. 多线程爪巴虫下载进击的巨人 v.2

    本文地址:https://goodgoodstudy.blog.csdn.net/article/details/108757857 文章目录 线程池 获取图片链接 下载图片 存在的问题 线程池 im ...

  2. 多线程爪巴虫下载进击的巨人

    文章目录 线程池 获取图片链接 下载图片 存在的问题 线程池 import contextlib import glob import os import re import threading im ...

  3. baidu文库爪巴虫——xls

    用开发者工具从下载文件的 response 中找文档内容,很快就找到了 分析请求地址及参数 然后回到文档源代码页面,发现这个请求地址已经包含在里面了,只需要把它提取出来即可 表格和word 文档还是不 ...

  4. python爬虫:利用多线程爬虫爬取下载进击的巨人图片

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本品文章来自腾讯云 作者:孤独的明月 文章目录 线程池 获取图片链接 下载图片 存 ...

  5. baidu文库爪巴虫——txt

    首先你应该清楚,直接从文档页面源代码中是找不到文档内容的, 但是我们通过查看浏览器下载的文件,可以很容易的发现文档内容的来源, 为什么说容易呢,引文包含内容的文件通常都是比较大的!只要按文件大小排序, ...

  6. 2021-03-10 Python多线程爬虫快速批量下载图片

    Python多线程爬虫快速批量下载图片 1.完成这个需要导入的模块 urllib,random,queue(队列),threading,time,os,json 第三方模块的安装 键盘win+R,输入 ...

  7. linux多线程_免费Linux下载工具,你还不知道?

    今天小编要跟大家分享的文章是关于Linux运维人员应该知道的免费Linux下载工具.Windows用户在想要使用下载管理器时可以享受很多选择.如Download Accelerator Plus和Re ...

  8. 华为手机鸿蒙系统官方下载入口,华为鸿蒙系统官方下载入口v.20

    华为鸿蒙系统官方下载入口v.20是一款非常好用的国产手机程序.华为鸿蒙系统官方下载入口v.20为您带来了华为方面提供的权威下载地址.在这款国产手机系统里您可以收获到相比于各种老牌外国手机系统更好的体验 ...

  9. c# 多线程多文件批量下载

    https://www.cnblogs.com/jianzhan/p/7137485.html c# 多线程多文件批量下载 废话少说,先演示一张效果图 简单说下过程喽 开发过程中其实总是会碰到项目想应 ...

最新文章

  1. LeetCode上最难的链表算法题,没有之一
  2. POS主密钥与工作密钥关联详解
  3. GitHub学习笔记
  4. b g opencv读入的图片 r_OpenCV提取显示一张图片(或者视频)的R,G,B颜色分量
  5. 牛逼!不得不服,第一次有人把Java 反射机制讲解这么透!
  6. StegaStamp:加州大学伯克利分校开源神奇的照片隐写术,打印的照片能当二维码用...
  7. 第四章 企业项目开发--切分配置文件
  8. 新建网站了!Github标星过万的吴恩达机器学习、深度学习课程笔记,《统计学习方法》代码实现,可以在线阅读了!...
  9. Oracle手工创建数据库
  10. mat后缀名_mat 文件 打开软件
  11. 微信能通过服务器改数据解封吗,【微信新规】微信永久封号官方解封方法
  12. Python:从UCI数据库下载数据集到内存
  13. @inherited 注解详解
  14. 半入耳蓝牙耳机推荐,音质最好的半入耳式蓝牙耳机品牌推荐
  15. 这届618:掀起直播盛世
  16. 一文让你彻底了解EMC防护器件之TVS
  17. ggplot2+ggparttern 条形图纹理图案填充加显著性标注教程
  18. 读《谨言慎行的力量 - 向南怀瑾学律己》
  19. C++11 decltype 的用法粗解
  20. 系统重构的未来:重构工具 Coca 一周年

热门文章

  1. 以太坊源码深入分析(10)-- 以太坊Bloom过滤器实现原理及应用场景分析
  2. Android自定义View来实现解析lrc歌词同步滚动、上下拖动、缩放歌词等功能
  3. 林轩田机器学习基石入门(三)
  4. 微信H5配置测试的appId和secret
  5. java字符串转数组(JAVA把字符串转化为数组)
  6. H5移动端适配方案rem/vw
  7. Ubuntu安装binutils
  8. lisp 套料_CAD自动编号插件下载
  9. 全国计算机二级aoa真题题库,计算机AOA试题单选判断及答案.docx
  10. 项目中怎样做技术选型