隐藏页面特效

生产者消费者模式

1|0通用代码


import threading import requests from lxml import etree import os from urllib import request from queue import Queue class Producer(threading.Thread): headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36", } def __init__(self, page_queue, img_queue, *args, **kwargs): super(Producer, self).__init__(*args, **kwargs) self.page_queue = page_queue self.img_queue = img_queue def run(self): while True: if self.page_queue.empty(): break url = self.page_queue.get() self.parse_page(url) def parse_page(self, url): response = requests.get(url=url,headers=self.headers) text = response.text html = etree.HTML(text) img_list = html.xpath('//div[@class="page-content text-center"]/div/a/img') for img in img_list: img_url = img.xpath('./@data-original')[0] img_name = img.xpath('./@alt')[0]+'.jpg' self.img_queue.put((img_url, img_name)) class Consumer(threading.Thread): def __init__(self, page_queue, img_queue, *args, **kwargs): super(Consumer, self).__init__(*args, **kwargs) self.page_queue = page_queue self.img_queue = img_queue def run(self): while True: if self.page_queue.empty() and self.img_queue.empty(): break img_url, img_name = self.img_queue.get() request.urlretrieve(img_url, "./imgs/" + img_name) print(img_name + " 下载完成!") # 定义一个主方法,该方法向处理方法中传值 def main(): page_queue = Queue(50) #存储页码链接 img_queue = Queue(100)#存储解析出来的图片链接 #想要爬取前10页的数据 for x in range(1, 11): url = "https://www.doutula.com/photo/list/?page=%d" % x page_queue.put(url) #将10页的页码链接加入到了page_queue for x in range(3): t = Producer(page_queue, img_queue) t.start() for x in range(3): t = Consumer(page_queue, img_queue) t.start() if __name__ == '__main__': main()

__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/14028182.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示