跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 爬虫实战:使用 Requests 与 Parsel 下载图片

综述由AI生成使用 Python 的 requests 和 parsel 库进行网页数据抓取的基本流程。通过浏览器开发者工具分析网络请求,获取接口参数,编写代码模拟请求并解析返回的 JSON 数据,最终将图片保存到本地。示例涵盖了环境配置、模块安装、请求发送、数据解析及文件保存等步骤,适用于学习网络爬虫基础技术。

XiaoPingzi发布于 2025/2/7更新于 2026/6/222 浏览
Python 爬虫实战:使用 Requests 与 Parsel 下载图片

Python 爬虫实战:使用 Requests 与 Parsel 下载图片

环境使用

  • Python 3.10
  • PyCharm

模块使用

  • requests >>> pip install requests 数据请求模块
  • parsel >>> pip install parsel 数据解析模块

模块安装: Win + R 输入 cmd,输入安装命令 pip install 模块名。例如:pip install requests。

爬虫实现的基本流程

一、数据来源分析

明确需求

明确采集的网站以及数据内容。 网址:https://example.com/comic/...(示例地址) 数据:漫画内容(多张图片)。

抓包分析

在浏览器中进行操作,通过浏览器自带开发者工具分析需要的数据内容位置。

  1. 打开开发者工具:F12 或右键点击检查,选择 Network(网络)。
  2. 刷新网页,让网页数据内容重新加载一遍。
  3. 找到图片链接:过滤图片直接点击 Img。
  4. 通过关键字找到对应数据包:存在一个数据包含了整章漫画内容数据。
  5. 关键字:使用图片链接中一段参数即可。

数据包地址示例:

https://example.com/chapter/content/v1/?chapter_id=xxx&comic_id=xxx&format=1&quality=1&sign=xxx&type=1&uid=xxx

二、代码实现步骤

发送请求

模拟浏览器对于 url 地址发送请求。可以直接复制 User-Agent 伪装。

代码内容:

导入模块

import requests
import os
import parsel
import re

发送请求函数

def GetResponse(url):
    # 模拟浏览器 (伪装)
    headers = {
        # User-Agent 用户代理,表示浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
    }
    
    response = requests.get(url=url, headers=headers)
    
     response
# 发送请求
# 返回值
return

获取图片链接

def GetImg(ID):
    # 请求网址 (请替换为实际目标网站接口)
    url = f'https://example.com/chapter/content/v1/?chapter_id={ID}&comic_id=xxx&format=1&quality=1&sign=xxx&type=1&uid=xxx'
    # 发送请求
    response = GetResponse(url=url)
    # 获取数据内容
    JsonData = response.json()
    # 解析数据 1. 提取图片链接所在列表 字典取值 (基础语法)
    pages = JsonData['data']['page']
    
    # 列表推导式
    ImgList = [page['image'] for page in pages]
    # 返回内容
    return ImgList

保存数据函数

def Save(img, title):
    # 发送请求 + 获取数据内容
    ImgContent = GetResponse(url=img).content
    # 程序自动创建文件夹
    if not os.path.exists('img'):  # 判断如果没有
        # 自动创建文件夹
        os.mkdir('img')
    # 指定了保存文件夹 -> img
    with open(f'img\\{title}.jpg', mode='wb') as f:
        f.write(ImgContent)

获取漫画信息:名字 / 章节名 / 章节 ID

def GetInfo():
    # 请求网址 (请替换为实际目标网站首页)
    link = 'https://example.com/comic/'
    # 发送请求 + 获取数据
    HtmlData = GetResponse(url=link).text
    # 解析数据
    selector = parsel.Selector(HtmlData)
    # 提取名字
    name = selector.css('.de-info__box .comic-title::text').get()
    # 提取章节名 + 章节 ID 所在 li 标签 (所有)
    lis = selector.css('.chapter__list .chapter__list-box .chapter__item')
    # 创建空列表
    TitleList = []
    ChapterIdList = []
    # for 循环遍历,二次提取
    for li in lis:
        # 提取章节名字
        title = li.css('a::text').getall()[-1].strip()
        # 提取章节 ID
        chapter_id = li.css('a::attr(data-chapterid)').get()
        TitleList.append(title)
        ChapterIdList.append(chapter_id)
    return name, TitleList, ChapterIdList

def main():
    # 获取漫画信息
    name, TitleList, ChapterIdList = GetInfo()
    for old_title, chapter_id in reversed(list(zip(TitleList, ChapterIdList))):
        # 定义函数需要调用函数
        ImgList = GetImg(ID=chapter_id)  # 返回图片列表
        print('正在保存:', old_title)
        # 定义标题变量
        num = 1
        # 替换特殊字符
        title = re.sub(r'[\\/:*?"<>|]', '', old_title)
        for img in ImgList:
            ImgName = f'{title}-{num}'
            # 调用保存函数
            Save(img=img, title=ImgName)
            num += 1

if __name__ == '__main__':
    main()

注意事项

本教程仅供技术学习与交流使用。在实际应用中,请务必遵守相关法律法规及目标网站的 robots.txt 协议,尊重版权,不要用于非法用途。

目录

  1. Python 爬虫实战:使用 Requests 与 Parsel 下载图片
  2. 环境使用
  3. 模块使用
  4. 爬虫实现的基本流程
  5. 一、数据来源分析
  6. 明确需求
  7. 抓包分析
  8. 二、代码实现步骤
  9. 发送请求
  10. 注意事项
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 核心语法与实战入门
  • Java 集合常见问题总结(1)
  • Kubernetes 与云原生开发:.NET Core 和 Java 的对比与实践
  • ToDesk AI 桌面助手 ToClaw:零门槛体验 OpenClaw 自动化能力
  • LLM 大模型基础知识:从入门到应用实践指南
  • Circle Loss:统一 Softmax 与 Triplet,从线性到圆形的优化视角
  • 详解高速 ADC 的串行 LVDS 数据捕获与接口设计
  • PythonWin7 项目指南:在 Windows 7 上安装 Python 3.8+
  • Python AI 模型构建、训练与评估实战指南
  • Web 服务架构与 I/O 模型详解
  • Stable Diffusion 扩散模型原理与 PyTorch 实现
  • Windows 本地部署 OpenClaw 指南:集成飞书与企业微信
  • 二分答案核心实战:木材加工与砍树问题详解
  • Jetpack Compose 实现微信风格图片浏览:缩放、切换与预览
  • 人形机器人画作拍卖创新高 王慧文回归美团探索 AI 应用
  • MySQL 索引及其底层数据结构详解
  • 老款 Mac 部署本地 AI:OpenClaw 环境一键搭建
  • 大模型 AI 产品经理成长攻略与核心学习路线
  • C++ 多态详解:虚函数机制与底层原理实现
  • 基于 MCP 协议的 JS 逆向自动化工具构建与实践

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online