学习记录:~~~~

  • 代码:
"""
2022年CSDN:抄代码抄错的小牛马
"""
import requests
import queue
from lxml import etree
import threading
import urllib.request
import osclass Producer(threading.Thread):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36',}def __init__(self, q1, q2, *args, **kwargs):super(Producer, self).__init__(*args, **kwargs)self.q1 = q1self.q2 = q2def run(self):while True:if self.q1.empty():breakurl = self.q1.get()self.parse_page(url)# print(url)def parse_page(self, url):resp = requests.get(url=url, headers=self.headers).texttree = etree.HTML(resp)div_list = tree.xpath('//div[@class="page-content"]/a')[1:]for div in div_list:img_url = 'https://dou.yuanmazg.com/' + div.xpath('./img/@data-original')[0]houzhui = img_url.split(".")[-1]img_name = div.xpath('./img/@alt')[0]end_name = img_name + '.' + houzhuiself.q2.put((img_url, end_name))# print(img_url,end_name)class Consumer(threading.Thread):# 创建一个文件夹os.makedirs("表情包下载", exist_ok=True)  # TRUE,不存在就创建,存在就不创建。flase,不存在也不创建。def __init__(self, q1, q2, *args, **kwargs):super(Consumer, self).__init__(*args, **kwargs)self.q1 = q1self.q2 = q2def run(self):while True:if self.q1.empty() and self.q2.empty():breakimg_url, end_name = self.q2.get()# print(img_url)urllib.request.urlretrieve(url=img_url, filename='./表情包下载/%s' % end_name)  # url= url ,文件名def main():q1 = queue.Queue(1000)  # 首页url的最大容量q2 = queue.Queue(1000)  # 每个图片的url的最大容量urls = []star_page = int(input('请输入起始页码:'))end_page = int(input('请输入结束页码:'))for page in range(star_page,end_page+1):url = f'https://dou.yuanmazg.com/doutu?page={page}'urls.append(url)for i in urls:q1.put(i)# print(q1.get())# for x in range(2):#     t1 = Producer(q1, q2)  # 实例化对象 Producer#     t1.start()# for x in range(3):#     t2 = Consumer(q1, q2)  # 实例化对象 Consumer#     t2.start()t1 = Producer(q1, q2)  # 实例化对象 Producert1.start()t2 = Consumer(q1, q2)  # 实例化对象 Consumert2.start()if __name__ == '__main__':main()
  • 运行看看


拜~~~

类与队列的简单实战爬虫相关推荐

  1. 用python写一个简单的爬虫_Python实现简易Web爬虫详解

    编辑推荐: 本文主要介绍了Python实现简易Web爬虫详解,希望对大家有帮助. 本文来自于脚本之家 ,由火龙果软件Alice编辑,推荐. 简介: 网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照 ...

  2. 纯手工打造简单分布式爬虫(Python)

    https://www.cnblogs.com/qiyeboy/p/7016540.html 本章讲的依旧是实战项目,实战内容是打造分布式爬虫,这对初学者来说,是一个不小的挑战,也是一次有意义的尝试. ...

  3. python最简单的爬虫代码,python小实例一简单爬虫

    python新手求助 关于爬虫的简单例子 #coding=utf-8from bs4 import BeautifulSoupwith open('', 'r') as file: fcontent ...

  4. rabbitmq几种工作模式_RabbitMQ六种队列模式-简单队列模式

    在官网的教程中,描述了如上六类工作队列模式: 简单队列模式:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列.也称为点对点模式. 工作模式:一个消息生产者,一个交换器,一个消息队列,多个 ...

  5. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  6. Nancy简单实战之NancyMusicStore(二):打造首页

    原文:Nancy简单实战之NancyMusicStore(二):打造首页 前言 继上一篇搭建好项目之后,我们在这一篇中将把我们NancyMusicStore的首页打造出来. 布局 开始首页之前,我们要 ...

  7. Java培训教程之使用Jsoup实现简单的爬虫技术

    1.Jsoup简述 Java中支持的爬虫框架有很多,比如WebMagic.Spider.Jsoup等.今天我们使用Jsoup来实现一个简单的爬虫程序. Jsoup拥有十分方便的api来处理html文档 ...

  8. Nancy简单实战之NancyMusicStore(四):实现购物车

    原文:Nancy简单实战之NancyMusicStore(四):实现购物车 前言 上一篇,我们完成了商品的详情和商品的管理,这一篇我们来完成最后的一个购物车功能. 购物车,不外乎这几个功能:添加商品到 ...

  9. RabbitMQ六种队列模式-简单队列模式

    前言 RabbitMQ六种队列模式-简单队列 [本文] RabbitMQ六种队列模式-工作队列 RabbitMQ六种队列模式-发布订阅 RabbitMQ六种队列模式-路由模式 RabbitMQ六种队列 ...

最新文章

  1. golang 系统调用 syscall 简介
  2. Java springcloud B2B2C o2o多用户商城 springcloud架构 (二十二)创建含有多module的springboot工程...
  3. 推翻自己和过往,重学自定义View
  4. GitHub 接连封杀开源项目惹众怒,CEO 亲自道歉!
  5. spark学习-37-Spark的SortShuffleManager
  6. bzoj 3190 赛车 半平面交
  7. 多比图形控件教程:基于Flex/Javascript的网页绘图控件
  8. LeetCode344. Reverse String
  9. 经典OA办公协同管理-原型UI设计-制作
  10. 结构体赋值 -- 构造函数
  11. linux 网卡bond
  12. react 使用rewired_使用react-app-rewired和customize-cra对默认webpack自定义配置
  13. python同时输出名字和时间_Python练习小工具——根据Exif的拍摄时间和设备名批量重命名照片...
  14. 启动计算机管理服务,win10系统打开服务管理器的五种方法
  15. 视频帧数,普清,高清,超清,分辨率
  16. 【统计知识总结系列01】回归分析、抽样技术、方差分析以及非参数统计中的方差分解
  17. python中idle什么意思_python的idle是什么
  18. ms sqlserver sap ase 数据库server-client通讯协议 TDS
  19. 卡塞格林光学系统_卡塞格林红外光学系统装调技术研究
  20. mysql nb3 备份_通过Navicat进行Mysql数据库自动备份与还原

热门文章

  1. java初始化二维数组的三种方式
  2. 2022年cfa一级二级三级网课资源
  3. JS基础实战--day07
  4. 如何购买企业SSL数字证书?
  5. 基本数据结构(算法导论)与python
  6. 贪吃蛇c语言程序复杂,刚学C语言,想写一个贪吃蛇的代码
  7. 世界上第一台通用计算机用途,世界上第一台计算机的作用?
  8. mybatis遍历foreach中or拼接
  9. android gif动态显示,Android 显示Gif 动态图片
  10. 零基础学python编程思维(九) | 面向对象的编程——类