这个爪巴虫还是有很多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. js判断浏览器\屏幕分辨率(转载)
  2. Servlet实现登录注册
  3. 如何通过DBLINK取REMOTE DB的DDL
  4. phpstorm一个窗口打开多个项目
  5. 王道操作系统考研笔记——2.3.3 进程互斥的硬件实现方法
  6. 正则表达式【第二卷】
  7. javascript Arrow functions(箭头函数)
  8. 文本比较算法Ⅸ——Primal-Dual算法
  9. 基层群众工作存在的问题_当前基层群众在移风易俗方面存在的问题
  10. 厦门大学计算机考研复试线2021,【厦门大学】2021考研复试分数线3月13日已公布!速看!...
  11. 树莓派搭建博客/网站教程
  12. 布隆过滤器在HBase中的应用
  13. 《Cocos Creator游戏实战》打砖块主要功能与逻辑实现
  14. Ice飞冰注意问题和可视化组件《三》
  15. Daily English(每日一句)
  16. MC34063A MC34063 贴片SOP-8 变换器控制芯片 电流0.8A 1.2A 1.5A
  17. 抓取得物数据出现验证码的解析思路
  18. php 竞拍系统,基于PHP+Mysql的校园商品拍卖系统
  19. 码出一个高颜值原生折线图(新增柱状图、环形图)
  20. 软件测试课堂作业+期末整理【超实用】

热门文章

  1. 获取拼多多流量?商家必看
  2. vmware运行ubuntu虚拟机出现诡异的鼠标闪烁
  3. SHT11的C语言,用SHT11 构成的温湿度监测系统
  4. 个人永久性免费-Excel催化剂功能第55波-Excel批注相关的批量删除作者、提取所有批注信息等...
  5. jQueryAjax学习笔记
  6. 正解TP/FP/TN/FN评价指标
  7. 如何将统一参考文献的格式?
  8. 使用mplayer查看摄像头
  9. 哪里能买到华强北真正洛达的airpods?
  10. win10蓝牙突然消失,在设备管理器中也没有蓝牙信息,也没有感叹号的硬件