《爬虫》爬取页面图片并保存
爬虫
- 前言
- 代码
- 效果
简单的爬取图片
前言
这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图片保存到本地,在这里保存一下爬虫代码。
只要修改正则匹配代码,同样适用于博客园爬取。
代码
为了提高效率,该脚本将从保存的本地 markdown 文件读取图片链接。当然脚本中也保留了爬取某个页面所有图片的函数。
脚本名:spider.py
import urllib.request
import urllib.parse
import sys
import os
import re def open_url(url):'''用于网页爬取。这里不采用这个函数'''req = urllib.request.Request(url) req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0')# 访问url,并将页面的二进制数据赋值给 pagepage = urllib.request.urlopen(req)# 将page中的内容转换为utf-8编码html = page.read().decode('utf-8')return htmldef read_file(file):print('\n正在读取文件...')with open(file, 'rb') as my_file:content = my_file.read()content = content.decode('utf-8')print('已读取文件.')return contentdef get_img(content, file_path):# 正则匹配图片链接# p=r'<img src="([^"]+\.png)"' # 可用于网页爬取p=r'https://img-blog\.csdnimg\.cn/[\w\-/]+\.(?:png|jpg|jpeg)'#返回正则表达式在字符串中所有匹配结果的列表print('\n正在读取图片链接...')img_list=re.findall(p, content)list_len = str(len(img_list))print('已读取图片链接.\n')for img_url in img_list:print(img_url)print('\n共 ' + list_len + ' 条数据')# 图片保存位置。如果文件夹不存在则创建save_path = file_path + '/assets/'if not os.path.exists(save_path):os.makedirs(save_path)print('\n正在保存图片...\n')num = 0 # 用于记录进度for each in img_list:#以 / 为分隔符,-1返回最后一个值photo_name=each.split("/")[-1]#访问 each,并将页面的二进制数据赋值给photophoto=urllib .request .urlopen(each)w=photo .read()# f=open(save_path + photo_name + '.png', 'wb')f=open(save_path + photo_name, 'wb')f.write(w)f.close()# 展示进度print(num % 10, end="")if (num + 1) % 10 == 0 and num != 0:print(' 进度: ' + str(num + 1) + '/' + list_len)sys.stdout.flush() # 刷新输出缓冲num += 1print('\n\n完成!\n')if __name__=='__main__':if len(sys.argv) != 2:print("\nUsage: python spider.py <file>")print('example: python spider.py "F:\\T\\test.md"')sys.exit()file = str(sys.argv[1])file_name = os.path.basename(file)file_path = os.path.dirname(file)print('\nfile_name: ' + file_name)print('file_path: ' + file_path)# 读取文件内容content = read_file(file)# 爬取图片get_img(content, file_path)
效果


别后相思人似月,云间水上到层城。
——《明月夜留别》(唐)李冶
相关文章:
《爬虫》爬取页面图片并保存
爬虫 前言代码效果 简单的爬取图片 前言 这几天打算整理与迁移一下博客。因为 CSDN 的 Markdown 编辑器很好用 ,所以全部文章与相关图片都保存在 CSDN。而且 CSDN 支持一键导出自己的文章为 markdown 文件。但导出的文件中图片的连接依旧是 url 连接。为了方便将图…...
【项目部署】JavaScript解析JSON解析报错Unexpected token xxx is not valid JSON
问题背景 这个报错发生在之前部署的一个前后端分离的项目中。后端使用的Spring Boot,前端使用的JavaScript,前后端交互使用Thymeleaf框架。 现象 项目组的另一个小伙伴说,突然有个页面打不开了,整个页面全空白。我F12打开浏览器…...
做接口测试如何上次文件
在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格式…...
Java SPI机制详解-01
1. 概述 SPI(Service Provider Interface),是 Java 6 引入了一个内置功能,实现服务提供发现和加载机制,使之与特定接口的匹配。 SPI 机制的核心思想就是 解耦 ,将装配的控制权移到程序之外,这…...
由浅入深C系列六:C中实现字符串trim的功能
C中实现字符串trim的功能 简介设计思路代码实现运行效果 简介 一个项目中,需要用c语言实现对字符串中的字定字符进行过滤并从字符串的删除,查询了C语言的基本库,没有发现有这样的函数,于是发挥程序员的主观能力性,自力…...
博客网站添加复制转载提醒弹窗Html代码
网站如果是完全禁止右键(复制、另存为等)操作,对用户来说体验感会降低,但是又不希望自己的原创内容直接被copy,今天飞飞和你们分享几行复制转载提醒弹窗Html代码。 效果展示: 复制以下代码,将其…...
ubuntu下nfs服务安装
操作系统:ubuntu22.04.2 一、服务端安装与配置 1、在服务端安装nfs服务端组件 sudo apt install nfs-kernel-server 2、创建共享目录share并且授权所有人可以访问 sudo mkdir /shared sudo chmod -R 777 /shared 3、配置nfs sudo vim /etc/exports 这将允许…...
Unity框架学习--2
接上文 IOC 容器是一个很方便的模块管理工具。 除了可以用来注册和获取模块,IOC 容器一般还会有一个隐藏的功能,即: 注册接口模块 抽象-实现 这种形式注册和获取对象的方式是符合依赖倒置原则的。 依赖倒置原则(Dependence I…...
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS
WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查…...
82. 删除排序链表中的重复元素 II
题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 解题思路:设置一个新的哑元节点result,作为头节点,将head中不重复地节点依次链接到哑元节点后面,最后返回result.next 初始值&…...
centos 7.x 单用户模式
最近碰到 centos 7.9 一些参数设置错误无法启动系统的情况,研究后可以使用单用户模式进入系统进行恢复操作。 进入启动界面,按 e ro 替换为 rw init/sysroot/bin/sh 替换前 替换后 Ctrl-x 进行重启进入单用户模式 执行 chroot /sysroot 可以查看日…...
取证--理论
资料: 各比赛 Writeup : https://meiyacup.cn/Mo_index_gci_36.html 哔站比赛复盘视频: https://space.bilibili.com/453117423?spm_id_from333.337.search-card.all.click 自动分析取证四部曲 新建案例添加设备自动取证制作报告 取证大…...
Tik Tok娱乐+电商MCN怎么做?
在美国外的热门市场中,TikTok 主要做的区域市场包括中东、拉美、欧洲和东亚,而这里面适合做电商的其实并不多。 欧洲、东亚都属于成熟市场,且 TikTok 本身在欧洲面临 DSA 法案更严格的审查,与在英国相同,欧洲各市场消…...
java 自定义xss校验注解实现
自定义一个注解Xss。名字随意 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targe…...
Selenium图片滑块验证码
因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方&#…...
CAP理论与MongoDB一致性,可用性的一些思考
正文 大约在五六年前,第一次接触到了当时已经是hot topic的NoSql。不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉。但是印象深刻的是这么一张图片(后来google到图片来自这里&…...
lc2536.子矩阵元素加1
暴力解法:直接按照题目所示在矩阵的相应位置加一 时间复杂度:O(n2 * queries.length) 空间复杂度:O(1) 二维差分:创建二维差分数组,通过对差分数组的修改来影响原来的数组,最后还原 时间复杂度&#x…...
C#使用OpenCv(OpenCVSharp)图像全局二值化处理实例
本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行全局二值化处理。 目录 图像二值化原理 函数原型 参数说明 实例 效果 图像二值化原理...
Patch SCN一键解决ORA-600 2662故障---惜分飞
客户强制重启库之后,数据库启动报ORA-600 2037,ORA-745 kcbs_reset_pool/kcbzre1等错误 Wed Aug 09 13:25:38 2023 alter database mount exclusive Successful mount of redo thread 1, with mount id 1672229586 Database mounted in Exclusive Mode Lost write protection d…...
const、指针、引用的综合
目录 代码段 定义引用变量的技巧 内存某处 正误判定技巧 温故知新 代码段 定义引用变量的技巧 // 定义引用变量的技巧#include<iostream> using namespace std;int main() {int a 1;int * p &a;// 首先,定义一个指针变量int * * q1 &p;// 然…...
VibeVoice长语音生成实战:制作完整播客节目的完整流程
VibeVoice长语音生成实战:制作完整播客节目的完整流程 1. 播客制作新选择:VibeVoice核心优势 传统播客制作面临三大痛点:专业主播难寻、录制设备昂贵、后期剪辑耗时。VibeVoice-TTS-Web-UI的出现为内容创作者提供了全新解决方案,…...
MathType 7 与 Word 2016 深度集成:从安装到高效排版的完整指南
1. 为什么需要MathType 7与Word 2016深度集成? 作为一名经常需要撰写学术论文的科研工作者,我深刻体会到在Word中编辑复杂数学公式的痛苦。Word自带的公式编辑器虽然基础功能尚可,但遇到矩阵运算、特殊符号或多行对齐时,操作效率直…...
前端可视化拖拽搭建方案
前端可视化拖拽搭建方案正在改变传统开发模式,让非技术背景的用户也能快速构建页面。通过直观的拖拽操作和实时预览功能,这种方案大幅降低了开发门槛,同时提升了效率。无论是企业官网、管理后台还是移动端H5,可视化搭建工具都能满…...
ccmusic-database/music_genre在音乐治疗中的应用:基于流派的疗法推荐系统
ccmusic-database/music_genre在音乐治疗中的应用:基于流派的疗法推荐系统 1. 音乐治疗的新机遇 音乐治疗作为一种非药物干预手段,正逐渐成为心理健康领域的重要辅助方式。传统的音乐治疗往往依赖治疗师的经验选择音乐,但这种方式存在一定的…...
魔兽争霸3终极优化指南:如何免费提升游戏性能与兼容性
魔兽争霸3终极优化指南:如何免费提升游戏性能与兼容性 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 你是否还在为魔兽争霸3的卡顿、画面…...
Phi-4-mini-reasoning在医疗诊断逻辑树的应用:症状推理系统
Phi-4-mini-reasoning在医疗诊断逻辑树的应用:症状推理系统 1. 医疗诊断的挑战与机遇 医疗诊断一直是临床实践中的核心环节,但也是一个充满挑战的过程。医生需要从患者的症状描述出发,结合医学知识和临床经验,进行多步推理和鉴别…...
VibePaper测了我的脑内小剧场:它偷走了我的分镜灵魂
VibePaper测了我的脑内小剧场:它在30秒里偷走了我的分镜灵魂事情是这样的—— 我对着 VibePaper 说了一句:“一个男人在梦里反复推开同一扇门,每次门后的世界都不一样。” 然后它用了不到30秒,还给我: 4个分镜图 2段动…...
LiuJuan20260223Zimage效果增强技巧:ControlNet兼容性测试与LiuJuan姿态控制初探
LiuJuan20260223Zimage效果增强技巧:ControlNet兼容性测试与LiuJuan姿态控制初探 1. 从一键部署到效果进阶:认识LiuJuan20260223Zimage 如果你对AI生成特定风格的人物图片感兴趣,那么LiuJuan20260223Zimage这个镜像绝对值得一试。它基于Z-I…...
软件法律的版权保护与合同管理
软件法律的版权保护与合同管理:数字时代的权益与风险 在数字化浪潮下,软件已成为企业和个人的核心资产,其法律保护与管理显得尤为重要。版权保护确保开发者的智力成果不被侵犯,而合同管理则规范了软件交易、许可和使用中的权利义…...
DeepSeek-OCR实战应用:物流单据智能处理方案
DeepSeek-OCR实战应用:物流单据智能处理方案 1. 物流行业的OCR需求与挑战 1.1 物流单据处理的痛点分析 物流行业每天产生海量的运单、发票、签收单等纸质单据,传统人工录入方式面临三大核心问题: 效率瓶颈:平均每张单据需要3-…...
