【Python爬虫案例教学】采集某网站壁纸,实现壁纸自由

news2024/10/2 12:24:17

前言

(。・∀・)ノ゙嗨 大家好,这里是小圆

现在开始每天都给大家 分享些关于python爬虫的案例教学

从最简单的开始 — 采集图片壁纸

今天就来扒拉这个优质的壁纸网站~

网址 👇

在这里插入图片描述

顺便瞧一眼 这里的壁纸 👇

在这里插入图片描述

当然 肯定不止这些…


前期准备

环境使用

  • Python 3.8 解释器
  • Pycharm 编辑器

模块准备

# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入正则模块 --> 内置模块, 不需要安装
import re

案例实现思路

一. 数据来源分析

  1. 明确需求:
    采集的网站是什么?
    在这里插入图片描述
    采集的数据是什么?
    图片链接
    图片名字
  2. 通过开发者工具抓包分析, 图片链接/图片名字 数据内容在哪里可以获取到
    <由小到大 先分析一张图片数据在什么地方, 再分析如何获取多张图片>
    在这里插入图片描述
    打开开发者工具: F12 / 鼠标右键点击检查选择network
    刷新网页: 让本网页数据内容重新加载一遍
    搜索数据来源: 复制关键参数, 直接进行搜索
    在这里插入图片描述
    目的获取图片链接/图片名字 👉 图片详情页
    在这里插入图片描述
    👉 获取图片ID 👉 图片目录页面里面有
    和正常访问网站观看图片一样的

代码实现步骤

  • 获取图片ID:

    1. 发送请求, 模拟浏览器对于url地址发送请求
      请求 图片目录页面url
    2. 获取数据, 获取服务器返回响应数据
      response 网页源代码
    3. 解析数据, 提取我们想要的数据内容
      图片ID
  • 获取图片链接/名字

    1. 发送请求, 模拟浏览器对于url地址发送请求
      请求 图片详情页页面
    2. 获取数据, 获取服务器返回响应数据
      response 网页源代码
    3. 解析数据, 提取我们想要的数据内容
      图片链接
      图片名字
      保存数据
    4. 保存数据, 保存本地文件夹

在这里插入图片描述

👇👇👇 ok,到这里后 咱就开始敲敲写写代码吧 👇👇👇


实现代码

1. 发送请求

模拟浏览器对于url地址发送请求

模拟浏览器 <反爬处理> 请求头 <字典数据类型>
如果你不伪装, 可能会被识别出来是爬虫程序, 从而得到数据内容
可以直接复制粘贴 --> 开发者工具里面就可以复制

<Response [200]> 响应对象
Response: 中文意思–>响应
<>: 表示对象
200: 状态码 表示请求成功

### 源码领取kou群:309488165 ### 
for page in range(2, 11):
    print(f'=================正在采集第{page}页的数据内容=================')
    # 请求图片目录页面url
    url = f'http://www.netbian.com/dongman/index_{page}.htm'
    # 伪装模拟成浏览器
    headers = {
        # User-Agent 用户代理 浏览器基本身份信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    # 发送请求
    # 调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名response接受返回的数据
    response = requests.get(url=url, headers=headers)

2. 获取数据

获取服务器返回响应数据

response 网页源代码
response.text 获取响应文本数据 <网页源代码>

3. 解析数据

提取我们想要的数据内容 👉 图片ID

调用re模块里面findall方法 --> 找到所有我们想要的数据

re.findall(‘找什么数据’, ‘从哪里找’) --> 从什么地方, 去匹配找什么样的数据内容

从 response.text<网页源代码> 里面 去找 <a href=“/desk/(\d+).htm” 其中 (\d+) 就是我们要的内容
\d+ 表示任意数字

    # 提取图片ID --> 列表 <盒子/箱子> '29381' 是列表<箱子>里面元素<苹果>
    img_id_list = re.findall('<a href="/desk/(\d+).htm"', response.text)
    # for循环遍历, 把列表里面元素 一个一个提取出来
    for img_id in img_id_list:
        # img_id变量<袋子> 给 img_id_list 列表<盒子> 里面 元素<苹果> 给装起来
        print(img_id)

4. 发送请求

在这里插入图片描述

5. 获取数据, 获取服务器返回响应数据

response 网页源代码

        # 请求详情页链接 --> f'{img_id}' 字符串格式化方法
        link = f'http://***.com/desk/{img_id}.htm'
        # 发送请求
        response_1 = requests.get(url=link, headers=headers)
        # 获取数据内容 网页源代码 ---> 乱码了, 进行转码
        response_1.encoding = 'gbk'

6. 解析数据

提取我们想要的数据内容 < 图片链接/图片标题 >

        img_url, img_title = re.findall('<img src="(.*?)" alt="(.*?)"', response_1.text)[0]

7. 保存数据

先获取图片数据内容

img_content = requests.get(url=img_url, headers=headers).content
with open('img\\' + img_title + '.jpg', mode='wb') as f:
            f.write(img_content)
print(img_url, img_title)

效果展示

在这里插入图片描述

在这里插入图片描述

视频教程

如何批量下载保存高清壁纸?手把手带你用Python实现出来

最后

今天的案例分享到这里就结束啦

对文章有问题的铁汁可以私信我哦

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/348021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30 - 面向对象的其他语法

目录 一、本章重点 二、对象的分类 1、类对象 &#xff08;1&#xff09;理解 &#xff08;2&#xff09;作用 2、实例对象 &#xff08;1&#xff09;理解 三、属性的划分 1、实例属性 &#xff08;1&#xff09;概念 &#xff08;2&#xff09;定义 &#xff08;3&#xff09…

操作系统的概念,功能和目标

一、概念&#xff1a; 操作系统是指①控制和管理整个计算机系统的硬件和软件资源&#xff0c;并合理地组织调度计算机的工作和资源的分配&#xff0c;以②提供给用户和其他软件方便的接口和环境&#xff0c;它③是计算机系统中最基本的系统软件。 二、功能和目标&#xff1a;…

零入门kubernetes网络实战-14->基于veth pair、namespace以及路由技术,实现跨主机命名空间之间的通信测试案例

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章继续提供测试案例&#xff1a; 基于veth pair、namespace以及路由技术&#xff0c;实现跨主机命名空间之间的通信 1、网络拓扑如下 2、网络拓扑构建…

【第二章】(1)了解系统内核和 Shell 终端的关系与作用

&#x1f427;2.1强大好用的Shell&#x1f9ca;1.什么是Shell&#xff1f;&#x1f9ca;2.Bash解释器的优势&#x1f427;2.2 执行命令的必备知识&#x1f9ca;1.Linux命令的格式&#x1f9ca;2.四个快捷键/组合键小技巧&#x1f9ca;1.什么是Shell&#xff1f; ​ 一台…

shell脚本的编写以及shell中语句(嵌入式学习)

shell学习shell脚本编写步骤shell变量功能性语句1.read2.expr3.let4.test逻辑运算符的书写格式结构性语句1.if…then…fi2、case...esac3、for..do..done4、while..do..doneshell脚本 将shell命令按照一定的逻辑顺序实现指定功能&#xff0c;放到一个文件中。文件叫脚本文件&a…

几个Base64编码工具,也有蹊跷

起因 需求&#xff1a;对一段内容进行base64加密&#xff0c;然后通过url的get请求进行发送到后台&#xff0c;由于加密的内容比较少&#xff0c;base64串也不是很长&#xff0c;我认为此方案可行。 于是找了三个base64编码的在线工具&#xff0c;分别是&#xff1a; 平台1&…

设计模式第六讲:责任链模式和迭代器模式详解

一. 责任链模式 1. 背景 在现实生活中&#xff0c;常常会出现这样的事例&#xff1a;一个请求有多个对象可以处理&#xff0c;但每个对象的处理条件或权限不同。例如&#xff0c;公司员工请假&#xff0c;可批假的领导有部门负责人、副总经理、总经理等&#xff0c;但每个领导…

【Java基础】020 -- 常见API

目录 一、游戏打包exe 二、Math 1、Math类的常用方法 ①、代码实现 2、小结 3、练习 ①、练习一&#xff1a;改进判断一个数是否为一个质数 ②、练习二&#xff1a;自幂数 三、System 1、时间原点 2、常用方法 3、课堂练习 4、注意事项 5、小结 四、Runtime 1、常用方法 2、练习…

微服务项目【商品秒杀接口压测及优化】

生成测试用户 将UserUtils工具类导入到zmall-user模块中&#xff0c;运行生成测试用户信息&#xff0c;可根据自身电脑情况来生成用户数量。 UserUtils&#xff1a; package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…

【黄啊码】我问ChatGPT如何学习PHP语言,它是这么说的

大家好&#xff0c;我是黄啊码&#xff0c;最近大家都在流行整chatGPT&#xff0c;今天它来了&#xff01;别人都在吹嘘它万能&#xff0c;能够代替程序员写代码&#xff0c;今天我们就让它教教我们学习PHP语言&#xff1a; 黄啊码&#xff1a; 如何有效学习php语言&#xff1…

关于剩余电流动作继电器在配电系统中的应用探讨

摘 要&#xff1a;据了解&#xff0c;我国每年剩余电流动作继电器&#xff08;RCD&#xff09;的使用量超过2.7亿台&#xff0c;属于CCC认证产品&#xff0c;广泛应用于住宅、办公、商业、酒店、学校等民用建筑和数据中心及工业场所。 现在剩余电流动作继电器依据的标准是GB/T…

vue项目如何使用 SheetJS(xlsx)插件?

简言 SheetJS是一款非常好用的前端处理表格文件的工具。它分社区版和专业版&#xff0c;我们今天来介绍如何简单使用它的社区版。 SheetJS社区版官网 介绍 你应该打开官网浏览具体使用详情。 安装 打开官网在如上图的Installation板块中可以找到各种运行模块的使用方式。 …

MongoDB 覆盖索引查询

MongoDB 覆盖索引查询 官方的MongoDB的文档中对覆盖查询做了说明&#xff1a; 所有的查询字段是索引的一部分所有的查询返回字段在同一个索引中 由于所有出现在查询中的字段是索引的一部分&#xff0c; MongoDB 无需在整个数据文档中检索匹配查询条件和返回使用相同索引的查询…

【半监督医学图像分割 2023 CVPR】UCMT 论文翻译

文章目录【半监督医学图像分割 2023 CVPR】UCMT 论文翻译摘要1. 介绍2. 相关工作2.1 半监督学习2.2 半监督分割2.3 不确定性引导的半监督语义分割3. 方法3.1 问题的定义3.2 总览3.3 协作式均值教师3.4 不确定性指导混合4. 实验和结论5. 总结【半监督医学图像分割 2023 CVPR】UC…

webpack(4版本)使用

webpack简介&#xff1a;webpack 是一种前端资源构建工具&#xff0c;一个静态模块打包器(module bundler)。在 webpack 看来, 前端的所有资源文件(js/json/css/img/less/...)都会作为模块处理。它将根据模块的依赖关系进行静态分析&#xff0c;打包生成对应的静态资源(bundle)…

sentinel持久化方案

一.sentinel规则推送原理 1.原有内存规则存储原理 (1)dashborad中请求到服务器后&#xff0c;在controller中通过http把规则直接推送给client&#xff0c;client接收后把规则放入内存&#xff1b; 2.持久化推送规则原理 ![在这里插入代码片](https://img-blog.csdnimg.cn/1…

质量保障体系建设演进案例

在业务早期发展阶段&#xff0c;主要是产品驱动、研发和测试互相配合。不同的测试方法是验证和保障交付质量的手段&#xff0c;而不是构建质量体系的基石。测试的努力带来的更多是一些“安全感”&#xff0c;而非安全保障。因此&#xff0c;要做到高质量的交付&#xff0c;就需…

k8s简单搭建

前言 最近学习k8s&#xff0c;跟着网上各种教程搭建了简单的版本&#xff0c;一个master节点&#xff0c;两个node节点&#xff0c;这里记录下防止以后忘记。 具体步骤 准备环境 用Oracle VM VirtualBox虚拟机软件安装3台虚拟机&#xff0c;一台master节点&#xff0c;两台…

Wails简介

https://wails.io/zh-Hans/docs/introduction 简介 Wails 是一个可让您使用 Go 和 Web 技术编写桌面应用的项目。 将它看作为 Go 的快并且轻量的 Electron 替代品。 您可以使用 Go 的灵活性和强大功能&#xff0c;结合丰富的现代前端&#xff0c;轻松的构建应用程序。 功能…

mac上安装mysql

mac上安装mysql1. 关于Linux上安装mysql2. 下载安装2.1 下载2.2 安装3. 客户端连接mysql3.1 先查看mysql服务3.2 连接mysql客户端3.2.1 终端使用命令连接3.2.2 可视化工具连接3.3 其他简单操作&#xff08;启动服务等&#xff09;3.3.1 可视化界面操作4. 配置环境变量4.1 配置环…