python爬虫,爬取网页壁纸图片

news2025/1/12 13:29:40

python爬虫实战,爬取网页壁纸图片

使用python爬取壁纸图片,保存到本地。

爬取彼岸图网,网站地址https://pic.netbian.com/

本人小白,记录一下学习过程。

开始前的准备

安装python环境,略。

python编辑器pycharm2024.2.3

本次代码用到的库

import requests	 #用于发送HTTP请求、处理响应内容等。
import re		#正则表达式
import os		#文件和目录的操作

使用库之前需要先进行安装

首先进行国内pip源设置

我是在windows电脑上操作的,文件资源管理器,输入%USERPROFILE%,然后按下回车

在这里插入图片描述

然后新建目录pip,然后再进入pip目录创建pip.ini,将下面阿里云地址保存到pip.ini中

[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/
[install] 
trusted-host=mirrors.aliyun.com

然后打开pycharm,打开终端,执行安装命令

pip install requests
pip install re
pip install os

在这里插入图片描述

整体思路

获取所需要的信息

打开浏览器的,然后打开f12,输入网站地址https://pic.netbian.com/4kmeinv/

可以看到请求地址https://pic.netbian.com/4kmeinv/以及请求方法get
在这里插入图片描述

还需要用到user-agent,用来模拟用户操作

在这里插入图片描述

图片共53页,我们需要把这53页图片全部爬取下来

在这里插入图片描述

点击第53页可以看到此时的请求地址为https://pic.netbian.com/4kmeinv/index_53.html

在这里插入图片描述

第一页的地址为https://pic.netbian.com/4kmeinv/index.html

后面每一页的地址都是https://pic.netbian.com/4kmeinv/index_页码.html

编写完整代码

import requests
import re
"""
. 表示除空格外任意字符(除\n外)
* 表示匹配字符零次或多次
? 表示匹配字符零次或一次
.*? 非贪婪匹配
"""
import os

"""
爬取所有图片、该网站图片共53页、第一页url为https://pic.netbian.com/4kmeinv/index.html
后面的url为https://pic.netbian.com/4kmeinv/index_页码.html
"""

url = "https://pic.netbian.com/4kmeinv/index.html"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}

#range(2,54) 从2开始循环,到53结束,
#当循环到53时,设置url为https://pic.netbian.com/4kmeinv/index_53}.html ,此时需要到下次循环才会爬取第53页的数据
for index in range(2,55):
    # 对图片地址发起请求
    response = requests.get(url=url, headers=headers)
    # 使用检测到的编码来解码相应内容
    response.encoding = response.apparent_encoding
    print(f"当前是第{index-1}页,当前url为:{url}")
    #print(response.text)
    url = f"https://pic.netbian.com/4kmeinv/index_{index}.html"
    parr = re.compile('src="(/uploads.*?)".alt="(.*?)"')
    image = re.findall(parr, response.text)
    #定义文件保存路径
    path = f"C:\\tmp\壁纸图片\第{index-1}页"
    if not os.path.isdir(path):
         os.mkdir(path)
    else:
        #若已存在则直接跳过当前循环
        continue

    for i in image:
          #i[0]是下载地址,i[1]是图片名字
          #拼接下载地址
          link = "https://pic.netbian.com" + i[0]
          image_name = i[1]
          image_name = image_name.replace("*", "x")
          print(link,image_name)
          with open(path+"/{}.jpg".format(image_name), "wb") as img:
              res = requests.get(link)
              img.write(res.content)
              img.close()

    print("\n-----------------------------------------\n")

运行截图

在这里插入图片描述
在这里插入图片描述
#执行完成后,再次执行,可以直观的看到每次请求的url
在这里插入图片描述

代码解释

#range(2,54) 从2开始循环,到53结束,
#当循环到53时,设置url为https://pic.netbian.com/4kmeinv/index_53}.html ,此时需要到下次循环才会爬取第53页的数据
for index in range(2,55):
    # 对图片地址发起请求
    response = requests.get(url=url, headers=headers)
    # 使用检测到的编码来解码相应内容
    response.encoding = response.apparent_encoding
    #打印出当前是第几页
    print(f"当前是第{index-1}页,当前url为:{url}")
    #如果需要可以打印response.text,查看每一页的请求返回结果
    #print(response.text)
    #使用index拼接下一次循环时请求的地址
    url = f"https://pic.netbian.com/4kmeinv/index_{index}.html"
    #对请求结果进行查找,查找包含/uploads和alt的内容
    #<img src="/uploads/allimg/240911/190656-1726052816af84.jpg" alt="花丛美女章若楠 4K壁纸 3840x2400" />
    parr = re.compile('src="(/uploads.*?)".alt="(.*?)"')
    image = re.findall(parr, response.text)
    #此时image值的格式如下:
    #('/uploads/allimg/240911/190656-1726052816af84.jpg', '花丛美女章若楠 4K壁纸 3840x2400')

在这里插入图片描述

    #对image进行循环
    for i in image:
          #i[0]是下载地址  /uploads/allimg/240911/190656-1726052816af84.jpg
          #i[1]是图片名字  花丛美女章若楠 4K壁纸 3840x2400
          #拼接下载地址
          link = "https://pic.netbian.com" + i[0]
          image_name = i[1]
          #有的图片中包含*  是特殊字符,将其转换为x  示例:1024*4080  -->  1024x4080
          image_name = image_name.replace("*", "x")
          print(link,image_name)
          with open(path+"/{}.jpg".format(image_name), "wb") as img:
              res = requests.get(link)
              img.write(res.content)
              img.close()

图片正确的下载地址如图所示,所以需要进行拼接

在这里插入图片描述

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

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

相关文章

Linux:防火墙相关命令使用(Ubuntu)

1.安装防火墙工具 虚拟机安装好系统后&#xff0c;默认是没有管理工具的。如果已经安装可以跳过。 # 安装ufw&#xff08;Uncomplicated Firewall&#xff09;&#xff0c;这是Ubuntu上管理防火墙的一个简单工具 sudo apt-get install ufw2.开启和关闭防火墙 # 开启防火墙 sud…

RuoYi-Vue若依框架-后端设置不登陆访问(白名单)

找到SecurityConfig类 确认自己的需求 /*** anyRequest | 匹配所有请求路径* access | SpringEl表达式结果为true时可以访问* anonymous | 匿名可以访问* denyAll | 用户不能访问* fullyAuthenticated | 用户完全认证可…

请速度收藏,Python爬虫必备的8大技巧!

想要快速学习爬虫&#xff0c;最值得学习的语言一定是Python&#xff0c;Python应用场景比较多&#xff0c;比如&#xff1a;Web快速开发、爬虫、自动化运维等等&#xff0c;可以做简单网站、自动发帖脚本、收发邮件脚本、简单验证码识别脚本。 爬虫在开发过程中也有很多复用的…

输电线路语义分割图像数据集,图片总共1200张左右,包含分割标签,json标签

输电线路语义分割图像数据集&#xff0c;图片总共1200张左右&#xff0c;包含分割标签&#xff0c;json标签 输电线路语义分割图像数据集介绍 数据集概述 名称&#xff1a;输电线路语义分割图像数据集图片数量&#xff1a;约1200张标注格式&#xff1a;JSON (包含像素级分割标…

中小型医院网站:Spring Boot开发策略

2 相关技术简介 2.1 Java技术 Java是一种非常常用的编程语言&#xff0c;在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中&#xff0c;Java的身影无处不在&#xff0c;并且拥有旺盛的生命力。Java的跨平台能力十分强大&#xff0c;只需一次编译&#xff0c;…

迅速入门Pytorch深度学习框架

一、引言 随着人工智能技术的飞速发展&#xff0c;深度学习已成为当今科技领域的热门话题。PyTorch作为一款功能强大且易于使用的深度学习框架&#xff0c;受到了越来越多开发者和研究者的青睐。本文旨在帮助新手快速入门PyTorch&#xff0c;掌握其基本概念、核心功能以及实际…

【汇编语言】寄存器(内存访问)(三)—— 字的传送

文章目录 前言1. 字的传送2. 问题一3. 问题一的分析与解答4. 问题二5. 问题二的分析与解答结语 前言 &#x1f4cc; 汇编语言是很多相关课程&#xff08;如数据结构、操作系统、微机原理&#xff09;的重要基础。但仅仅从课程的角度出发就太片面了&#xff0c;其实学习汇编语言…

【LeetCode每日一题】——1588.所有奇数长度子数组的和

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【题目进阶】八【解题思路】九【时间频度】十【代码实现】十一【提交结果】 一【题目类别】 前缀和 二【题目难度】 简单 三【题目编号】 1588.所有奇数长度子数组的和 …

【AI系统】AI 学习方法与算法现状

在人工智能&#xff08;AI&#xff09;的漫长历史中&#xff0c;我们见证了从早期的规则驱动系统到现代的机器学习模型的转变。AI的学习方法是其进步的核心&#xff0c;而算法现状则反映了当前技术的高度和未来的发展方向。 Ⅰ.AI 学习方法 AI的工作原理基于深度神经网络&…

源码编译llama.cpp for windows on arm

源码编译llama.cpp for windows on arm 这里有编译好的&#xff0c;直接下载使用 https://github.com/turingevo/llama.cpp-build/releases 1 先编译openblas for windows on arm 查看我的文章 《源码编译 openblas for windows on arm》 2 启用OpenBlas加速 上一步openb…

A0002.主机访问虚拟机中windows系统时,ping不通问题解决

问题再现 解决方法 查看主机的IP地址及DNS 在虚拟机中设置IP地址和DNS

leetcode计数排序

计数排序&#xff08;counting sort&#xff09;通过统计元素数量来实现排序&#xff0c;通常应用于整数数组。 给定一个长度为 的数组 nums &#xff0c;其中的元素都是“非负整数” def counting_sort(nums: list[int]):"""计数排序"""# 完整实…

设置 Notepad++ 制表符(Tab 缩进)宽度为2个空格大小

Notepad 默认的制表符宽度是 4 个空格的大小&#xff0c;一个规模比较大的代码段或者 xml 等文件&#xff0c;小屏幕打开时看到的情景真的和让人着急&#xff0c;拖来拖去&#xff01;有两种方案可以解决这种情况。 修改缩进为空格 这种我们不太推荐&#xff0c;但是有些公司…

【Vue】Vue3.0(十一)Vue 3.0 中 computed 计算属性概念、使用及示例

上篇文章&#xff1a;【Vue】Vue3.0&#xff08;十&#xff09;toRefs()和toRef()的区别及使用示例 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月15日10点23分 文章目录 Vue 3.0中…

IDC《中国网络安全软件技术发展路线图,2024》报告身份管理 移动安全推荐厂商

10月9日&#xff0c;全球知名研究与分析机构IDC发布了《IDC TechScape&#xff1a;中国网络安全软件技术发展路线图&#xff0c;2024》报告&#xff0c;深入剖析了中国网络安全软件市场的现状与未来趋势。芯盾时代作为领先的零信任业务安全产品方案提供商&#xff0c;凭借在身份…

FFmpeg 4.3 音视频基础到工程应用-多路H265监控录放C++开发一 : 环境搭建1 vs2019 安装,

一 VS2019安装 https://pan.baidu.com/s/1CtMOM5Zhu-HcHcj611edOg#list/path%2F 密码 p668 二 菜单运行vs2019编译控制台 如果我们要build 32 位的程序&#xff0c;则使用 如果我们要build 64 位的ffmpeg&#xff0c;则使用 x64 Navite Tools Command Prompt for VS 2019 我们…

红日靶机(四)笔记

VulnStack-红日靶机四 概述 这个靶场环境包含了三台机器&#xff0c;一台web&#xff0c;两台window域机器。web服务是使用docker容器搭建的&#xff0c;所以就涉及到docker逃逸。而在获得立足点的过程中&#xff0c;我们要对三个docker容器分别测试&#xff0c;不能漏掉可以…

2012年国赛高教杯数学建模C题脑卒中发病环境因素分析及干预解题全过程文档及程序

2012年国赛高教杯数学建模 C题 脑卒中发病环境因素分析及干预 脑卒中&#xff08;俗称脑中风&#xff09;是目前威胁人类生命的严重疾病之一&#xff0c;它的发生是一个漫长的过程&#xff0c;一旦得病就很难逆转。这种疾病的诱发已经被证实与环境因素&#xff0c;包括气温和湿…

Ubuntu内存扩容

目录 vmware设置Ubuntu设置查看 读研后发现&#xff0c;Ubuntu的使用量直线上升&#xff0c;之前给配置了20g内存&#xff0c;安装了个ros后&#xff0c;没啥内存了。本文实现给Ubuntu扩容。 vmware设置 这里 我使用别人的截图来演示。 我在这里改成了60 Ubuntu设置 sudo a…

Linux基础-进程的超详细讲解(2)_进程的创建

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Linux基础-进程的超详细讲解(2)_进程的创建与状态 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#…