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

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_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
在这里插入图片描述

代码解释

#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  -->  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.rhkb.cn/news/447345.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动化检查网页的TDK,python+selenium自动化测试web的网页源代码中的title,Description,Keywords

首先&#xff0c;TDK是什么&#xff1f;对于新手小白来说&#xff0c;可能是懵逼的&#xff0c;所以这里给出一个官方的解说‌网页的TDK是指标题&#xff08;Title&#xff09;、描述&#xff08;Description&#xff09;和关键词&#xff08;Keywords&#xff09;的集合‌。这…

大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Blazor Web APP学习记录

目录 1 呈现模式1.1 静态SSR1.2 服务器端交互SSR1.3 客户端交互CSR1.4 自动交互式1.5 注意 2 Blazor Web APP项目3 会话状态3.1 Blazor Server会话状态保存3.2 Blazor WebAssembly 会话状态保存 1 呈现模式 参见&#xff1a;https://learn.microsoft.com/zh-cn/aspnet/core/bl…

Golang | Leetcode Golang题解之第474题一和零

题目&#xff1a; 题解&#xff1a; func findMaxForm(strs []string, m, n int) int {dp : make([][]int, m1)for i : range dp {dp[i] make([]int, n1)}for _, s : range strs {zeros : strings.Count(s, "0")ones : len(s) - zerosfor j : m; j > zeros; j--…

点评项目-7-缓存击穿的两种解决方案、缓存工具类的编写

缓存击穿 在高并发访问的访问中&#xff0c;对于复杂业务 key 的缓存&#xff0c;可能会在缓存生效前打入大量的请求&#xff0c;导致大量的请求打到数据库 解决方案&#xff1a; 1.互斥锁&#xff0c;给缓存的构建过程加上一个锁&#xff0c;当拿到锁时才进行下一步&#x…

【Boss直聘-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

线性自抗扰控制(LADRC)系统算法框图

非线性ADRC(NLADRC)详细算法框图和源代码请参考专栏系列文章,常用链接如下: 1、NLADRC自抗扰控制 NLADRC自抗扰控制从Simulink仿真到PLC控制实现_自抗扰控制器 simulink仿真-CSDN博客文章浏览阅读1.6k次,点赞2次,收藏7次。本文介绍了如何将ADRC自抗扰控制算法从Simulink…

牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据&#xff0c;适用于多种图像识别&#xff0c;目标检测&#xff0c;区域入侵检测等算法作为数据集。 数据集中包括牛只行走&#xff0c;站立&#xff0c;进食&#xff0c;饮水等不同类型的数据&#xff0c;可以用于行为检测 数据集中包含多种不同种类的牛只&#xff…

【MATLAB源码-第249期】基于matlab的信道量化反馈的预编码仿真,采用均匀量化方式和LDL分解的预编码。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于信道量化反馈的预编码技术是当今无线通信系统中的一个核心研究方向。随着多输入多输出&#xff08;MIMO&#xff09;系统的广泛应用&#xff0c;如何有效地利用信道状态信息&#xff08;CSI&#xff09;进行预编码成为提…

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了&#xff0c;这里我以目前最新的版本为例&#xff0c;先在官网下载源码&#xff1a;GitHub - ultralytics/yolov5: YOLOv5 &#x1f680; in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型&#xff0c;需要哪个就点击哪个模型就行&am…

统一时序预测模型,上下文长度首次扩展至千级别!!!

统一时序预测模型&#xff0c;上下文长度首次扩展至千级别&#xff0c;适用各类数据集&#xff01; 今天给大家介绍一篇清华大学的时间序列预测最新工作&#xff0c;提出了统一的Transformer时序预测模型&#xff0c;能同时处理单变量和多变量时序预测&#xff0c;并将时序预测…

PPT分享:埃森哲-如何利用大数据进行数据挖掘与分析

PPT下载链接见文末~ 在当今信息爆炸的时代&#xff0c;大数据已成为企业决策、科学研究及社会发展的重要驱动力。数据挖掘与分析作为大数据应用的核心环节&#xff0c;能够帮助我们从海量数据中提取有价值的信息和知识。 本文将引导您了解如何利用大数据进行数据挖掘与分析&a…

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 前言 阅读该篇之前&#xff0c;建议先阅读下面的系列文章&#xff1a; Android深入理解包管理–PackageManagerService和它的“小伙伴…

苹果正式宣布:iPhone全面开放近场通信(Near Field Communication,简称NFC)【使用安全元件提供app内NFC数据交换功能】

文章目录 引言I iPhone的NFC功能开发者用户数据交换的体验革新安全与隐私II 知识扩展:近场通信(NFC)技术钱包NFC开关打开读取NFC标签(NFC tags )权限demo引言 2014年iPhone 6开始,苹果首次引入了NFC功能,但最初只允许自家的Apple Pay进行移动支付。慢慢地适配了交通卡,增…

【CSS】纯css3螺旋状loading加载特效

效果图 <div class"ai-loader"><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot"></div><div class"dot">&…

【AI知识点】三种不同架构的大语言模型(LLMs)的区别

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】 在自然语言处理&#xff08;NLP&#xff09;中&#xff0c;预训练语言模型&#xff08;LLMs, Large Language Models&#xff09;通常基于不同的架构&#xff0c;如仅编码器的模型&#xff08;Encoder-only&#xff09;、…

量子计算机的原理与物理实现

量子计算机的原理与物理实现很复杂 指导性原则 首先思考制备一台量子计算机需要些什么&#xff1f; 需要量子比特——二能级量子系统。除了量子计算机需要满足一些物理特性&#xff0c;它还必须要把量子比特绘制到某种初态上&#xff0c;以及测量系统的输出态。 而实验上的挑战…

基于SSM+微信小程序的实验室设备故障报修管理系统2

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的实验室设备故障报修管理系统2实现了管理员&#xff0c;用户&#xff0c;维修员三个角色。 管理员功能有 个人中心&#xff0c;用户管理&#xff0c;维修员管理&#…

[网络基础]——ICMP(互联网控制消息协议)协议介绍

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年10月15日8点23分 在现代网络通信中&#xff0c;互联网控制消息协议&#xff08;ICMP&#xff09;扮演着至关重要的角色…

使用Go语言的gorm框架查询数据库并分页导出到Excel实例

文章目录 基本配置配置文件管理命令行工具: Cobra快速入门基本用法 生成mock数据SQL准备gorm自动生成结构体代码生成mock数据 查询数据导出Excel使用 excelize实现思路完整代码参考 入口文件效果演示分页导出多个Excel文件合并为一个完整的Excel文件 完整代码 基本配置 配置文…