2020/4/11 斗图啦多线程爬取表情包

2024-01-19 02:48

本文主要是介绍2020/4/11 斗图啦多线程爬取表情包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【斗图啦多线程爬虫思路】

网站:https://www.doutula.com/photo/list/?page=1
爬取的是最新的表情包这个页面的图片

思路
1.分析需求,创建解析线程和下载线程
因为按照顺序爬取速度比较忙,所以也是第一次使用多线程来爬取,加快爬取速度。
在这里插入图片描述
2.空列表的预先准备
把初始url地址构造好后统一放入到一个空列表中,方便调用多个线程解析
把线程解析后的url统一放入另一个空列表中,方便调用多个线程下载

3.构造解析图片url地址函数
这个网站数据解析相对比较简单,就是普通的页面。
因为是多线程,所以函数里面在获取列表里面的值的时候要加上线程锁,获取完毕后把锁揭开。
用list.pop()方法,每次只请求列表最后一个的数据,如果列表里面是空值,则结束循环。

这里有个注意问题:最开始启动线程的时候,放url地址的列表最开始是空的,如果直接同时,会导致线程获取不到数据而直接结束。
所以解决的办法是在下载线程启动前停顿个几秒钟,让列表里面有写入值,然后才能解析。
在这里插入图片描述
4、构造下载图片函数
下载图片的函数原理跟解析图片函数的原理基本一致

5.线程之间尽量间隔一点时间
解析太快有时候可能会出现问题,所以尽量加一点间隔时间。

最终代码如下:

```python
import requests
from lxml import etree
import urllib.request
import os
import threading
import timeURL = 'https://www.doutula.com/photo/list/?page={}'
URL_LIST = []
PAGE_LIST = []
LOCK  = threading.Lock()headers = {'User-Agent'

这篇关于2020/4/11 斗图啦多线程爬取表情包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/621051

相关文章

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Python多进程、多线程、协程典型示例解析(最新推荐)

《Python多进程、多线程、协程典型示例解析(最新推荐)》:本文主要介绍Python多进程、多线程、协程典型示例解析(最新推荐),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 目录一、multiprocessing(多进程)1. 模块简介2. 案例详解:并行计算平方和3. 实现逻

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir