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

mitmproxy 爬虫,下载自己的博客图片

1. 起因, 目的:

  • 打算把 mitmproxy 作为爬虫的主力工具,简单,强大,简直就是一辆会飞的坦克,还要啥自行车。
  • 打算先写10个爬虫,即 ,10 小例子 ,找找手感,后面再搭建大一点的系统。

2. 先看效果

这里插入图片

3. 过程:

分2步走

1. 开启 mitmweb

import os
import requests
from mitmproxy import http"""
# 帮我写个脚本把图片下载下来
mitmweb -s get_imgs.py 
# 当我运行这个命令的时候,
# 可以把图片下载到当前目录下 , imgs/ 目录下
"""def response(flow: http.HTTPFlow) -> None:# 检查 imgs 文件夹是否存在,如果不存在则创建它if not os.path.exists("imgs"):os.makedirs("imgs")# 判断响应的内容类型是否为图片if flow.response.headers.get("Content-Type", "").startswith("image/"):# 获取图片的文件名filename = flow.request.url.split("/")[-1]# 确保文件名不为空,防止异常if filename:path = os.path.join("imgs", filename)with open(path, "wb") as f:f.write(flow.response.content)

mitmweb -s get_imgs.py

2. 第二部分,点击自动滚动按钮。
  • 使用我自己写的一个浏览器插件,我前面的博客中提到过,读者可以找找看。
    在这里插入图片描述

剩下的就是,坐等图片飞到本地文件夹。

3. 删掉一些小图片,这个很简单

import osdef delete_images(folder, kb_limit=200):total = os.listdir(folder)print(f"删除之前,图片数量是: {len(total)}")for img in os.listdir(folder):img_file = os.path.join(folder, img)# print(img_file)bytes_size = os.path.getsize(img_file)kb_size = int(bytes_size / 1024)if kb_size < kb_limit:os.remove(img_file)after = os.listdir(folder)print(f"删除之后,图片数量是: {len(after)}")if __name__ == '__main__':# 在这里传入文件夹的名称folder_name = r"  C:\Users\Administrator\Work\mitm\imgs  ".strip()delete_images(folder_name, kb_limit=200)

4. 结论 + todo

  • 对于这个 浏览器插件, 我需要增加几个按钮,即,调整页面滚动的速度,1倍,2倍,5倍。

希望对大家有帮助。

http://www.xdnf.cn/news/12401.html

相关文章:

  • 【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
  • 5.2 HarmonyOS NEXT应用性能诊断与优化:工具链、启动速度与功耗管理实战
  • transformer和 RNN以及他的几个变体区别 改进
  • 【Redis】分布式锁的介绍与演进之路
  • Windows系统中如何使用符号链接将.vscode等配置文件夹迁移到D盘(附 CMD PowerShell 双版本命令)
  • 人机融合智能 | “人智交互”跨学科新领域
  • MAX3490
  • 如何在没有 iTunes 的情况下备份 iPhone
  • 如何让AI自己检查全文?使用OCR和LLM实现自动“全文校订”(可DIY校订规则)
  • 2025五大免费变声器推荐!
  • 汽车的安全性能测试:试验台铁地板的重要性
  • Python数学可视化:3D参数曲面与隐式曲面绘制技术
  • 【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
  • .net webapi http参数自定义绑定模型
  • .Net Framework 4/C# 关键字(非常用,持续更新...)
  • 2025年,百度智能云打响AI落地升维战
  • 学习 React【Plan - June - Week 1】
  • 基于端到端深度学习模型的语音控制人机交互系统
  • vue+elementUI+springboot实现文件合并前端展示文件类型
  • 主流 AI IDE 之一的 Cursor 介绍
  • vite配置@别名,以及如何让IDE智能提示路经
  • C++单例模式教学指南
  • React 基础入门笔记
  • 服务器磁盘空间被Docker容器日志占满处理方法
  • 交易所系统攻坚:高并发撮合引擎与合规化金融架构设计
  • Android 之 kotlin 语言学习笔记四(Android KTX)
  • 彻底解决 MFC 自绘控件闪烁
  • 遥感与GIS在滑坡、泥石流风险普查中的实践技术应用
  • Web 架构之缓存策略实战:从本地缓存到分布式缓存
  • LeetCode 128. 最长连续序列