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

devtools/2024/10/15 13:04:23/

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

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

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

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

开始前的准备

安装python环境,略。

python编辑器pycharm2024.2.3

本次代码用到的库

python">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,打开终端,执行安装命令

python">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

编写完整代码

python">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_encodingprint(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:#若已存在则直接跳过当前循环continuefor 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
在这里插入图片描述

代码解释

python">#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')

在这里插入图片描述

python">    #对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  -->  1024x4080image_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.ppmy.cn/devtools/126178.html

相关文章

Adobe 推出全新 AI 视频生成器 Firefly Video Model,完全使用授权内容进行训练

Adobe 推出全新 AI 视频生成器 Firefly Video Model&#xff0c;完全使用授权内容进行训练 &#x1f310;&#x1f3ac; 大家好&#xff0c;我是猫头虎 &#x1f44b;&#xff0c;今天带大家了解一下 Adobe 刚刚发布的 Firefly Video Model&#xff0c;这款全新 AI 视频生成器…

armv7-a 异常排查

dfsr: data fault status register 发生异常时&#xff0c;该寄存器能够表示引起异常的原因&#xff0c;如非对齐访问、mmu translation fault 等等读取 dfsr 到 r[x] 寄存器 &#xff1a;mrc p15,0,r[x],c5,c0,0 dfar: data fault address register 保存了引起 data abort 异常…

docker compose入门6—如何挂载卷

在 Docker Compose 中&#xff0c;可以通过 volumes 字段将宿主机的文件或目录挂载到容器中。这样可以实现数据持久化、共享数据或配置等。以下是一些常见的挂载方式和示例。 1. 挂载单个文件 如果你想将宿主机上的一个特定文件挂载到容器中&#xff0c;可以使用以下格式&…

微服务架构下的负载均衡:算法深度剖析与配置策略优化

在微服务架构日益盛行的今天&#xff0c;系统的可伸缩性、高可用性和性能优化成为了技术团队关注的重点。负载均衡作为微服务架构中的关键组件&#xff0c;对于确保服务请求的均匀分布、提升系统资源利用率以及提高整体服务质量起着至关重要的作用。本文将深入探讨微服务中的负…

这个狐狸头还记得吗?Visual FoxPro,一代神作

90年代&#xff0c;VFP、VB还有Delphi&#xff0c;这几个开发语言可都是火得很&#xff0c;特别是VFP&#xff0c;因为它自带了个免费的DBF数据库&#xff0c;所以好多单位都爱用VFP来做MIS系统。 回忆里的“狐狸头” 一不小心就容易暴露自己的“资深”身份&#xff0c;这东西…

科研绘图系列:R语言散点相关系数图(scatter plot)

文章目录 介绍加载R包数据函数画图系统信息介绍 散点相关系数图是一种数据可视化图表,它结合了散点图和相关系数来展示两个连续变量之间的关系。这种图表通常用于相关性分析,以判断两个变量之间是否存在某种关联,并总结坐标点的分布模式。 在散点相关系数图中,横轴和纵轴…

安全光幕的Mutting功能

安全光幕的muting功能是一种在特定条件下暂时取消对物体的检测&#xff0c;以允许生产设备正常操作而不会触发安全停止的技术。 Muting功能的核心在于它能够区分人员和物料的通过。当物料或小车等非危险对象需要频繁出入时&#xff0c;muting功能可以暂时关闭安全光幕的检测功…

Android SELinux——策略文件配置结构(八)

在 Android 系统中&#xff0c;SELinux 主要是通过一系列配置文件来进行管理和配置的。这些配置文件涵盖了策略定义、标签映射、签名信息等多个方面。 一、SeLinux文件体系 之前提到 Android 架构中大致包含 AOSP、厂商、Vendor 等部分。在 Android 8 以上的系统中&#xff0c…