当前位置: 首页 > news >正文

批量爬取网站图片脚本

不分文件夹

import requests
from bs4 import BeautifulSoup
import os
from concurrent.futures import ThreadPoolExecutordef download_image(img_url):# 检查图片后缀是否为.jpg或.jpegif img_url.lower().endswith(('.jpg', '.jpeg')):try:img_response = requests.get(img_url, stream=True)img_size = int(img_response.headers.get('content-length', 0))if img_size > 50 * 1024:  # 大于50KBfilename = os.path.join(images_dir, img_url.split('/')[-1])with open(filename, 'wb') as f:for chunk in img_response.iter_content(1024):f.write(chunk)print(f"Downloaded {img_url}")except Exception as e:print(f"Error downloading {img_url}: {e}")else:print(f"Skipped {img_url} due to file extension")def download_images_from_page(url):page_response = requests.get(url)page_soup = BeautifulSoup(page_response.content, 'html.parser')images = page_soup.find_all('img')with ThreadPoolExecutor(max_workers=5) as executor:  # 可以调整max_workers来改变线程数for img in images:img_url = img['src']executor.submit(download_image, img_url)def main(base_url, start_path):global images_dirimages_dir = 'images'if not os.path.exists(images_dir):os.makedirs(images_dir)start_url = f"{base_url}/{start_path}"response = requests.get(start_url)soup = BeautifulSoup(response.content, 'html.parser')links = soup.find_all('h3')for link in links:a_tag = link.find('a', href=True)if a_tag:full_url = f"{base_url}/{a_tag['href']}"download_images_from_page(full_url)# 示例中使用的基本URL和开始路径
base_url = 'http://xxxxxxx'
start_path = 'thread6.php?fid=15'if __name__ == "__main__":main(base_url, start_path)

按文件夹分类

import requests
from bs4 import BeautifulSoup
import os
from concurrent.futures import ProcessPoolExecutor
import redef sanitize_folder_name(name):"""清理文件夹名称,移除或替换不合法的文件系统字符。"""return re.sub(r'[\\/*?:"<>|]', '_', name)def download_image(data):img_url, filename_prefix = dataif img_url.lower().endswith(('.jpg', '.jpeg')):try:img_response = requests.get(img_url, stream=True)img_size = int(img_response.headers.get('content-length', 0))if img_size > 20 * 1024:  # 大于20KBfilename = f"{filename_prefix}.jpg"with open(filename, 'wb') as f:for chunk in img_response.iter_content(1024):f.write(chunk)print(f"Downloaded {filename}")except Exception as e:print(f"Error downloading {img_url}: {e}")else:print(f"Skipped {img_url} due to file extension")def download_images_from_page(url, base_dir):page_response = requests.get(url)page_soup = BeautifulSoup(page_response.content, 'html.parser')images = page_soup.find_all('img')img_data = []for i, img in enumerate(images):img_url = img['src']filename_prefix = os.path.join(base_dir, f"{i:04d}")img_data.append((img_url, filename_prefix))with ProcessPoolExecutor(max_workers=4) as executor:  # 调整max_workers来改变进程数executor.map(download_image, img_data)def main(base_url, start_path):global images_dirimages_dir = 'images'if not os.path.exists(images_dir):os.makedirs(images_dir)start_url = f"{base_url}/{start_path}"response = requests.get(start_url)soup = BeautifulSoup(response.content, 'html.parser')links = soup.find_all('h3')for link_index, link in enumerate(links):a_tag = link.find('a', href=True)if a_tag:folder_name = sanitize_folder_name(a_tag.text.strip())full_url = f"{base_url}/{a_tag['href']}"page_dir = os.path.join(images_dir, folder_name)if not os.path.exists(page_dir):os.makedirs(page_dir)download_images_from_page(full_url, page_dir)# 示例中使用的基本URL和开始路径
base_url = 'http://xxx/pw'
start_path = 'thread1022.php?fid=15&page=3'if __name__ == "__main__":main(base_url, start_path)

相关文章:

批量爬取网站图片脚本

不分文件夹 import requests from bs4 import BeautifulSoup import os from concurrent.futures import ThreadPoolExecutordef download_image(img_url):# 检查图片后缀是否为.jpg或.jpegif img_url.lower().endswith((.jpg, .jpeg)):try:img_response requests.get(img_ur…...

scrapy 爬虫:多线程爬取去微博热搜排行榜数据信息,进入详情页面拿取第一条微博信息,保存到本地text文件、保存到excel

如果想要保存到excel中可以看我的这个爬虫 使用Scrapy 框架开启多进程爬取贝壳网数据保存到excel文件中&#xff0c;包括分页数据、详情页数据&#xff0c;新手保护期快来看&#xff01;&#xff01;仅供学习参考&#xff0c;别乱搞_爬取贝壳成交数据c端用户登录-CSDN博客 最终…...

网络、UDP编程

1.网络协议模型: OSI协议模型 应用层 实际发送的数据 表示层 发送的数据是否加密 会话层 是否建立会话连接 传输层 数据传输的方式&#xff08;数据报、流式&#xff09; 网络层 …...

VSCode安装与使用

1、下载地址&#xff1a;Documentation for Visual Studio Code 在 VS Code 中使用 Python - 知乎 (zhihu.com) 自动补全和智能感知检测、调试和单元测试在Python环境(包括虚拟环境和 conda 环境)之间轻松切换 在 VS Code 中安装插件非常的简单&#xff0c;只需要打开 VS Code…...

进程和线程的区别与联系

进程和线程是计算机系统中两个重要的概念&#xff0c;它们在操作系统中扮演着不同的角色&#xff0c;并有着不同的特点和用途。以下是详细信息&#xff1a; 进程。进程是操作系统中资源分配的基本单位&#xff0c;它包括程序、数据和进程控制块。每个进程都有自己的地址空间&a…...

6、Redis-KV设计、全局命令和安全性

目录 一、value设计 二、Key设计 三、全局命令——针对所有key 四、安全性 一、value设计 ①是否需要排序&#xff1f;需要&#xff1a;Zset ②需要缓存的数据是单个值还是多个值&#xff1f; 单个值&#xff1a;简单值---String&#xff1b;对象值---Hash多个值&#x…...

python之海龟绘图

海龟绘图&#xff08;turtle&#xff09;是一个Python内置的绘图库&#xff0c;也被称为“Turtle Graphics”或简称“Turtles”。它采用了一种有趣的绘图方式&#xff0c;模拟一只小海龟在屏幕上爬行&#xff0c;而小海龟爬行的路径就形成了绘制的图形。这种绘图方式最初源自20…...

Java实战:Spring Boot 实现异步记录复杂日志

日志记录是软件开发中非常重要的一环&#xff0c;它可以帮助我们快速定位问题、监控程序运行状态等。在 Spring Boot 应用中&#xff0c;异步记录日志是一种常见的需求。本文将详细介绍如何在 Spring Boot 中实现异步记录复杂日志&#xff0c;包括异步日志的基本原理、实现方式…...

“色狼”用英语怎么说?柯桥日常英语,成人英语口语学习

最近有粉丝问我"色狼"英文翻译是啥 首先声明不是"colour wolf"哈 关于“色狼”的英文表达有很多 快和C姐一起来看看吧&#xff01; 1.pervert 这个单词的意思是变态、色狼 是对性变态者最直观的描述 He is such a pervert&#xff01; I saw him lo…...

Docker前后端项目部署

目录 一、搭建项目部署的局域网 二、redis安装 三、MySQL安装 四、若依后端项目搭建 4.1 使用Dockerfile自定义镜像 五、若依前端项目搭建 一、介绍前后端项目 一张图带你看懂ruoyi的前后端项目部署 得出结论&#xff1a;需要4台服务器&#xff0c;都处于同一个局域网中…...

如何快速的搭建一个小程序

要快速搭建一个小程序&#xff0c;你可以按照以下步骤进行&#xff1a; 明确目标和需求&#xff1a;在开始搭建小程序之前&#xff0c;首先明确你的小程序的主要功能、目标用户以及希望实现的业务需求。这将帮助你更好地规划和设计小程序。选择小程序平台&#xff1a;根据你的…...

STM32自学☞AD多通道

涉及到的硬件有&#xff1a;光敏传感器&#xff0c;热敏传感器&#xff0c;红外对射传感器&#xff0c;电位器 通过adc将他们采集的模拟信号转换为数值 ad.c文件 #include "stm32f10x.h" #include "stm32f10x_adc.h" #include "ad.h" #inc…...

微服务之商城系统

一、商城系统建立之前的一些配置 1、nacos Nacos是一个功能丰富的开源平台&#xff0c;用于配置管理、服务发现和注册、健康检查等&#xff0c;帮助构建和管理分布式系统。 在linux上安装nacos容器的命令&#xff1a; docker run --name nacos-standalone -e MODEstandalone …...

安卓玩机工具推荐----高通芯片9008端口读写分区 备份分区 恢复分区 制作线刷包 工具操作解析

上期解析了下adb端口备份分区的有关操作 安卓玩机工具推荐----ADB状态读写分区 备份分区 恢复分区 查看分区号 工具操作解析 在以往的博文中对于高通芯片机型的分区读写已经分享了很多。相关类似博文 安卓备份分区----手动查询安卓系统分区信息 导出系统分区的一些基本操作 …...

全量知识系统问题及SmartChat给出的答复 之16 币圈生态链和行为模式

Q.42 币圈生态链和行为模式 我认为&#xff0c;上面和“币”有关的一系列概念和技术&#xff0c;按设计模式的划分 &#xff0c;整体应该都属于行为模式&#xff0c;而且应该囊括行为模式的所有各个方面。 而行为又可以按照三种不同的导向&#xff08;以目的或用途为导向、过…...

【MOMO_Tips】批量将word转换为PDF格式

批量将word转换为PDF格式 1.打开文件–>选项–>自定义功能区–>开发工具–>确定 2.点开开发工具&#xff0c;选择第一个visual basic 3.进入页面后找到插入–>模块&#xff0c;就可以看到这样的画面之后将下列vba代码复制粘贴到模块中 Sub ConvertWordsToPd…...

【JSON2WEB】08 Amis的事件和校验

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…...

抖店类目报白什么意思?什么类目需要报白?这次给你讲明白!

我是电商珠珠 不少新手在选择类目的时候&#xff0c;有些类目却无法选择&#xff0c;系统显示需要报白才可以。那什么是报白&#xff1f;怎么报白&#xff1f;今天我就一次性给你们讲清楚。 抖店类目报白什么意思&#xff1f; 根据官方的说法&#xff0c;报白就是针对一些比…...

<C++>【继承篇】

​ ✨前言✨ &#x1f393;作者&#xff1a;【 教主 】 &#x1f4dc;文章推荐&#xff1a; ☕博主水平有限&#xff0c;如有错误&#xff0c;恳请斧正。 &#x1f4cc;机会总是留给有准备的人&#xff0c;越努力&#xff0c;越幸运&#xff01; &#x1f4a6;导航助手&#x1…...

size_t 和double相乘怎么转换size_t

在C中&#xff0c;size_t和double可以直接相乘&#xff0c;结果会自动转换为double类型。如果你想要得到的结果是size_t类型&#xff0c;你需要进行显式类型转换。但是要注意&#xff0c;double转size_t可能会丢失小数部分&#xff0c;只保留整数部分。 以下是一个例子&#x…...

【开题答辩全过程】以 基于Android的个人财务管理系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

造相-Z-Image-Turbo亚洲美女LoRA实战:小宇宙播客封面图情绪传达技巧

造相-Z-Image-Turbo亚洲美女LoRA实战&#xff1a;小宇宙播客封面图情绪传达技巧 1. 项目介绍与核心价值 今天要分享的是一个特别实用的AI工具——基于Z-Image-Turbo的亚洲美女LoRA图片生成服务。这个工具专门为内容创作者设计&#xff0c;特别是小宇宙播客的主播们&#xff0…...

Capacitor插件避坑指南:Android/iOS双端自动更新那些踩过的坑

Capacitor跨平台自动更新实战&#xff1a;Android与iOS双端兼容性深度解析 移动应用开发中&#xff0c;自动更新功能是提升用户体验的关键环节。对于使用Capacitor框架的开发者而言&#xff0c;如何优雅处理Android和iOS平台的差异&#xff0c;成为技术实现的核心挑战。本文将…...

PyTorch 2.5快速部署指南:3步开启你的AI模型训练之旅

PyTorch 2.5快速部署指南&#xff1a;3步开启你的AI模型训练之旅 1. PyTorch 2.5环境准备 PyTorch 2.5作为当前最流行的深度学习框架之一&#xff0c;带来了多项性能优化和新特性。在开始之前&#xff0c;我们需要确保环境配置正确。 1.1 系统要求检查 操作系统&#xff1a…...

Phi-3-mini-128k-instruct与STM32开发:生成嵌入式C代码与调试逻辑

Phi-3-mini-128k-instruct与STM32开发&#xff1a;生成嵌入式C代码与调试逻辑 1. 引言 如果你玩过STM32&#xff0c;尤其是像STM32F103C8T6这种经典的“蓝色药丸”最小系统板&#xff0c;肯定对下面这些场景不陌生&#xff1a;为了点亮一个LED&#xff0c;翻遍数据手册&#…...

OpenClaw隐私保护:GLM-4.7-Flash本地处理敏感数据的实践方案

OpenClaw隐私保护&#xff1a;GLM-4.7-Flash本地处理敏感数据的实践方案 1. 为什么需要本地化AI处理敏感数据&#xff1f; 去年我在处理公司财务报告自动化时遇到一个棘手问题&#xff1a;使用云端AI服务需要上传包含客户隐私的Excel文件到第三方服务器。尽管服务商承诺数据安…...

Pixel Dream Workshop 作品集:基于LSTM时序模型生成的动态艺术画展示

Pixel Dream Workshop 作品集&#xff1a;基于LSTM时序模型生成的动态艺术画展示 1. 当AI遇见艺术&#xff1a;LSTM如何创造动态视觉叙事 在数字艺术创作领域&#xff0c;时序模型正带来一场革命性的变化。Pixel Dream Workshop最新推出的动态艺术画系列&#xff0c;展示了长…...

OpenClaw自动化写作助手:基于GLM-4.7-Flash的草稿生成与润色

OpenClaw自动化写作助手&#xff1a;基于GLM-4.7-Flash的草稿生成与润色 1. 为什么需要自动化写作助手 作为一个长期与文字打交道的内容创作者&#xff0c;我经常面临这样的困境&#xff1a;明明有好的选题灵感&#xff0c;却卡在初稿阶段耗费大量时间&#xff1b;或是写完后…...

从《巴伦周刊》谈起,我们该如何保住 SRE 的直觉?

大多数 AI 依然停留在执行层面&#xff0c;它们只能在 Demo 里写写脚本。一旦丢进真实的生产集群&#xff0c;面对复杂的资源依赖和权限限制&#xff0c;它们很难像人类专家那样&#xff0c;给出真正能拍板的建议。最近&#xff0c;《巴伦周刊》对 Chaterm 的报道引起了我的注意…...

开源AI助手竟能自主建频道、做视频?李宏毅深度解析“小龙虾”的神秘工作原理!

最近全网爆火的「养龙虾」到底是什么&#xff1f;为什么一个开源的 AI 助理项目&#xff0c;能让 AI 自己创建 YouTube 频道、自己做教学视频、24 小时自主干活&#xff1f; 台大李宏毅老师的这堂《解剖小龙虾 — 以 OpenClaw 为例介绍 AI Agent 的运作原理》&#xff0c;用最通…...