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

news/2024/10/15 12:12:03/

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/news/1539425.html

相关文章

Zilliz获Forrester报告全球第一;OB支持向量能力;Azure发布DiskANN;阿里云PG发布内置分析引擎

重要更新 1. Azure发布PostgreSQL向量索引扩展DiskANN&#xff0c;声称在构建HNSW/IVFFlat索引上&#xff0c;速度、精准度都超越pg_vector&#xff0c;并解决了pg_vector长期存在的偶发性返回错误结果的问题( [1] )。 2. 阿里云RDS PostgreSQL 发布AP加速引擎&#xff08;rds…

one-api搭建大模型API平台

one-api搭建大模型API平台 前言一、Docker部署二、登录三、添加渠道四、调用总结 GitHub地址&#xff1a;https://github.com/songquanpeng/one-api 前言 one-api接入了&#xff1a; ● OpenAI ChatGPT 系列模型&#xff08;支持 Azure OpenAI API&#xff09; ● Anthropic C…

计算机网络——p2p

流媒体是指在网络上以流式传输技术实时播放的多媒体内容&#xff0c;如音频、视频等。以下是关于流媒体的详细介绍&#xff1a; 一、工作原理 数据分割与传输&#xff1a; 流媒体技术将多媒体文件分割成较小的数据包。这些数据包按照特定的顺序进行编号&#xff0c;然后通过网络…

MC802单片机:触控未来,8位高性能与多IO接口的完美结合

MC802单片机&#xff1a;开启智能生活新篇章 MC802 &#xff08;2 Touch Key 4 I/O&#xff09; MC802是由厦门晶尊微电子科技有限公司&#xff08;ICman&#xff09;推出的一款高性能8位单片机&#xff0c;它集成了2个自校正容性触摸按键和4个I/O口&#xff0c;专为需要多…

简单实现手机、电脑相互操作

1、从手机截图到sdcard 2、将图片导出到PC 3、从PC加载图片 4、开启定时器 5、操作电脑UI事件 1、 private static void takeScreenshot(String path) {long t1 System.currentTimeMillis();String command "adb devices"; // 替换为你需要执行的shell命令Str…

Python知识点:基于Python技术,如何使用TensorFlow进行自动驾驶模型训练

开篇&#xff0c;先说一个好消息&#xff0c;截止到2025年1月1日前&#xff0c;翻到文末找到我&#xff0c;赠送定制版的开题报告和任务书&#xff0c;先到先得&#xff01;过期不候&#xff01; 使用TensorFlow进行自动驾驶模型训练的Python技术详解 自动驾驶技术是人工智能领…

Spring Boot课程支持:智能答疑系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

SaaS架构:中央库存系统架构设计

大家好&#xff0c;我是汤师爷~ 近年来&#xff0c;越来越多的零售企业大力发展全渠道业务。在销售额增长上&#xff0c;通过线上的小程序、直播、平台渠道等方式&#xff0c;拓展流量变现渠道。在会员增长方面&#xff0c;通过多样的互动方式&#xff0c;全渠道触达消费者&am…