Python爬虫:下载4K壁纸

🎁🎁创作不易,关注作者不迷路🎀🎀

目录

🌸完整代码

🌸分析

 🎁基本思路

🎁需要的库

🎁提取图片的链接和标题

👓寻找Cookie和User-Agent

👓图片链接和标题

🎁下载保存图片

🎁获取目录页面图片和翻页提取

👓目录页图片的提取

👓翻页规律寻找

🌸运行效果

 🌸文末彩蛋🎀

我们经常想要寻找一些高清的壁纸,图片作为素材(为CSDN博客找一张吸引读者的封面🤣),然而一张一张的下载太慢了,因此为了提高工作效率, 我们可以采用爬虫的方式,快速下载图片。

🌸完整代码

import os#导入操作系统的库
import requests  #导入HTTP库
from lxml import etree#导入lxml库,数据解析global num
num=1
#请求头,伪装爬虫
header={
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0',
'cookie':
'zkhanecookieclassrecord=%2C66%2C70%2C'}#获取具体的图片的地址和名字信息
# url='https://pic.netbian.com/tupian/34694.html'
def get_pic(url,header):re=requests.get(url,headers=header)re.encoding=re.apparent_encoding#获取html文本时用网页原有的编码方式,防止乱码#print(re.apparent_encoding) #返回的编码html=etree.HTML(re.text)link=html.xpath('//div[@class="photo-pic"]/a/img/@src')[0]#获取图片链接link='https://pic.netbian.com'+linkprint(link)title=html.xpath('//div[@class="photo-pic"]/a/img/@title')[0]#获取图片名称print(title)return title,link#下载保存图片
def download_pic(url,header):global numtitle,link=get_pic(url,header)if not os.path.exists(r"C:\Users\liu\Desktop\图片\4K壁纸"):#未找到文件夹则创建文件夹os.mkdir(r"C:\Users\liu\Desktop\图片\4K壁纸")content=requests.get(link,headers=header).contentwith open(rf"C:\Users\liu\Desktop\图片\4K壁纸\{str(num)}.jpg",'wb') as f:#以二进制编码写入文件f.write(content)num += 1#目录翻页提取链接
def get_content_link(url,header):# url='https://pic.netbian.com/pingban/index.html're=requests.get(url,headers=header)re.encoding=re.apparent_encoding# print(re.text)html=etree.HTML(re.text)links=html.xpath('//div[@class="slist"]//a/@href')for x in links:x='https://pic.netbian.com'+xdownload_pic(x,header)#循环遍历网页,处理信息
for i in range(1,24):if i==1:url='https://pic.netbian.com/pingban/index.html'else :url=f'https://pic.netbian.com/pingban/index_{i}.html'get_content_link(url,header)

🌸分析

 🎁基本思路

  •  找到图片页网页源代码
  • 提取所有图片的链接和标题
  • 下载保存图片
  • 爬取目录页的网页源代码
  • 下载目录页的图片
  • 分析不同页面的地址变化,找出规律实现翻页下载

🎁需要的库

import os
import requests
from lxml import etree

requests和lxml库是第三方库,需要自己安装

🎁提取图片的链接和标题

👓寻找Cookie和User-Agent

首先打开页面,打开开发者工具,按Ctrl+R刷新页面,点击开发者工具的“网络”选项,点击第一份文件,查看请求地址,Cookie和User-Agent

 将Cookie和User-Agent作为请求头

header={
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0',
'cookie':
'zkhanecookieclassrecord=%2C66%2C70%2C'}
👓图片链接和标题

这里需要用到lxml库以及xpath的知识,看图说话,链接和地址存在<div class="photo-pic">下的a元素中img元素中的src属性和title属性

图片链接

link=html.xpath('//div[@class="photo-pic"]/a/img/@src')[0]#获取图片链接

图片标题

title=html.xpath('//div[@class="photo-pic"]/a/img/@title')[0]#获取图片名称

写成函数方便调用

#获取具体的图片的地址和名字信息
# url='https://pic.netbian.com/tupian/34694.html'
def get_pic(url,header):re=requests.get(url,headers=header)re.encoding=re.apparent_encoding#获取html文本时用网页原有的编码方式,防止乱码#print(re.apparent_encoding) #返回的编码html=etree.HTML(re.text)link=html.xpath('//div[@class="photo-pic"]/a/img/@src')[0]#获取图片链接link='https://pic.netbian.com'+linkprint(link)title=html.xpath('//div[@class="photo-pic"]/a/img/@title')[0]#获取图片名称print(title)return title,link

🎁下载保存图片

存储到一个新的文件夹“4K壁纸”,如果文件夹不存在,需要创建,这里要用到os库

#未找到文件夹则创建文件夹
if not os.path.exists(r"C:\Users\liu\Desktop\图片\4K壁纸"):        os.mkdir(r"C:\Users\liu\Desktop\图片\4K壁纸")

写入文件

content=requests.get(link,headers=header).content
with open(rf"C:\Users\liu\Desktop\图片\4K壁纸\{str(num)}.jpg",'wb') as f:#以二进制编码写入文件f.write(content)

写成函数方便调用

#下载保存图片
def download_pic(url,header):global numtitle,link=get_pic(url,header)if not os.path.exists(r"C:\Users\liu\Desktop\图片\4K壁纸"):#未找到文件夹则创建文件夹os.mkdir(r"C:\Users\liu\Desktop\图片\4K壁纸")content=requests.get(link,headers=header).contentwith open(rf"C:\Users\liu\Desktop\图片\4K壁纸\{str(num)}.jpg",'wb') as f:#以二进制编码写入文件f.write(content)num += 1

🎁获取目录页面图片和翻页提取

上面我们实现一张图片的保存,写了十几行代码算是成功保存了🤣🤣🤣,一张图片干嘛这么麻烦捏😂,直接点击“图片另存为”不就行了吗,那如果是很多图片吗,那肯定是爬虫更快了呗

👓目录页图片的提取

依然用到lxml库,利用xpath语法提取

#目录翻页提取链接
def get_content_link(url,header):# url='https://pic.netbian.com/pingban/index.html're=requests.get(url,headers=header)re.encoding=re.apparent_encoding# print(re.text)html=etree.HTML(re.text)links=html.xpath('//div[@class="slist"]//a/@href')for x in links:x='https://pic.netbian.com'+xdownload_pic(x,header)
👓翻页规律寻找

📕找到第一页目录页

https://pic.netbian.com/pingban/index.html

📕找到第二页目录页

https://pic.netbian.com/pingban/index_2.html

📕找到第三页目录页

https://pic.netbian.com/pingban/index_3.html

发现规律:第一页单独列出来,其他页通过for循环改变index_{i}即可

#循环遍历网页,处理信息
for i in range(1,24):if i==1:url='https://pic.netbian.com/pingban/index.html'else :url=f'https://pic.netbian.com/pingban/index_{i}.html'get_content_link(url,header)

通过for循环遍历,最终可以实现所有图片的下载

🌸运行效果

成功下载4K壁纸,耗时两分半🐔,下载400多张图片,爬虫提取就是快,手动提取预估一坤时左右🐔

 

 🌸文末彩蛋🎀

 

 

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

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

相关文章

突破•指针六

听说这是目录哦 数组和指针笔试题解析&#x1fae7;一维数组1&#x1f355;&#x1f355;&#x1f355;&#x1f355;&#x1f355;&#x1f355;&#x1f355; 字符数组1&#x1f354;&#x1f354;&#x1f354;&#x1f354;&#x1f354;&#x1f354;&#x1f354;2&#…

PCL 采样一致性模型介绍

采样一致性可以简单高效的检测出一些具有数学表达式的目标模型。PCL中的sample consensus模块中不仅包含各种的采样一致性估计方法,也包含一些已经编写好的数学模型,下面主要介绍一下PCL中的采样一致性模型。 1. 二维圆模型 pcl::SampleConsensusModelCircle2D< PointT …

AI学习记录 - 自注意力机制的计算流程图

画图不易&#xff0c;如果你从这个图当中得到灵感&#xff0c;大佬赏个赞 过段时间解释一下&#xff0c;为啥这样子计算&#xff0c;研究这个自注意力花了不少时间&#xff0c;网上很多讲概念&#xff0c;但是没有具体的流程图和计算方式总结…

Win11表情符号输入详细教程,一学就会!

在Win11电脑操作中&#xff0c;用户可以根据自己的需求&#xff0c;点击输入想要的表情符合。但许多新手用户不知道怎么操作才能输入&#xff1f;这时候用户按下快捷键&#xff0c;快速打开表情符号选择界面&#xff0c;然后选择需要的表情符号点击输入即可。以下系统之家小编给…

Can GPT-3 Perform Statutory Reasoning?

文章目录 题目摘要相关工作SARAGPT-3 对美国法典的了解GPT-3 在对合成法规进行简单推理时遇到困难结论 题目 GPT-3 可以进行法定推理吗&#xff1f; 论文地址&#xff1a;https://arxiv.org/abs/2302.06100 摘要 法定推理是用事实和法规进行推理的任务&#xff0c;法规是立法机…

Linux嵌入式学习——C++学习(2)

一、标识符的作用域和可见性 &#xff08;一&#xff09;作用域 1、全局作用域 在函数外部声明的变量和函数具有全局作用域。这些变量和函数在程序的任何地方都可以被访问。 2.局部作用域 在函数内部、循环体内部或条件语句内部声明的变量具有局部作用域。这些变量只能在其…

X射线物质质量衰减系数的查询计算方法

最近进行硕士毕业课题&#xff0c;需要各种各样物质的质量衰减系数&#xff08;线性衰减系数&#xff09;&#xff0c;包括高原子序数的金属物质还有一些复杂的化合物或者混合物&#xff0c;之前知道美国的XCOM &#xff1a;XCOM: Photon Cross Sections Database这个数据库可以…

仓颉语言运行时轻量化实践

杨勇勇 华为语言虚拟机实验室架构师&#xff0c;目前负责仓颉语言静态后端的开发工作 仓颉语言运行时轻量化实践 仓颉Native后端&#xff08;CJNative&#xff09;是仓颉语言的高性能、轻量化实现。这里的“轻量化”意指仓颉程序运行过程中占用系统资源&#xff08;内存、CPU等…

dll修复工具有没有免费的?排行榜Top8更新,一键修复所有dll缺失

DLL 错误是常见的系统问题&#xff0c;可能导致系统崩溃或 Windows 故障&#xff0c;这让每天使用电脑的人倍感烦恼。为了有效解决这些反复出现的问题&#xff0c;使用 DLL 修复工具显得尤为重要。对于喜欢尝试免费软件的用户&#xff0c;市面上有许多优秀的免费dll 修复工具可…

打开 Mac 触控板的三指拖移功能

对于支持力度触控的触控板&#xff0c;可以选择使用三指手势来拖移项目。 相应的设置名称会因你使用的 macOS 版本而有所不同&#xff1a; 选取苹果菜单  >“系统设置”&#xff08;或“系统偏好设置”&#xff09;。 点按“辅助功能”。 点按“指针控制”&#xff08;…

【vue3】【elementPlus】【国际化】

1.如需从0-1开始&#xff0c;请参考 https://blog.csdn.net/Timeguys/article/details/140995569 2.使用 vue-i18n 模块&#xff1a; npm i vue-i18n3.在 src 目录下创建 locales 目录&#xff0c;里面创建文件&#xff1a;en.js、zh-cn.js、index.js 语言js文件&#xff1a;…

html5宠物网站模板源码

文章目录 1.设计来源1.1 主界面1.2 主界面菜单1.3 关于我们界面1.4 宠物照片墙界面1.5 宠物博客界面1.6 宠物服务界面1.7 宠物团队界面1.8 联系我们界面 2.效果和源码2.1 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 【博主推荐】&a…

【轻松掌握】使用Spring-AI轻松访问大模型本地化部署并搭建UI界面访问指南

文章目录 读前必看什么是Spring-AI目前已支持的对接模型本文使用Spring-AI版本构建项目选择必要的依赖配置系统变量 聊天模型API配置文件方式1-使用默认配置方式2-自定义配置配置其他参数使用示例 图像模型API配置文件方式1-使用默认配置方式2-自定义配置配置其他参数使用示例 …

开发效率翻倍攻略!大学生电脑小白管理秘籍,资料秒搜技巧大公开!C盘满了怎么办?如何快速安全的清理C盘?烦人的电脑问题?一键解决!

如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f; 文章目录 如何正确管理自己的第一台电脑&#xff1f;大一新生如何管理自己的电脑&#xff1f;老鸟如何追求快捷操作电脑&#xff1f;前言初级基础分区操…

2024年第八届计算生物学与生物信息学国际会议 (ICCBB 2024)即将召开!

2024 年第八届计算生物学和生物信息学国际会议&#xff08;ICCBB 2024&#xff09;将于2024年11月28 -30在日本京都召开&#xff0c;ICCBB 2024是展示理论、实验和应用计算生物学和生物信息学领域新进展和研究成果的主要论坛之一。我们相信&#xff0c;通过大家的共同努力&…

oled使用 f4软件iic 数字 汉字 小图片 HAL库

基于江科大的oled标准库进行移植 到Hal库上 本人参考了许多大佬的源码 进行更改 由于F4和F1主频不一样 由于F4主频太高 在进行软件iic时需要延时一下 才可驱动oled 本人在网上找了一个开源的us延时函数 已经添加进入 文件分享 通过百度网盘分享的文件&#xff1a;delay&#…

记一次 .NET某智慧出行系统 CPU爆高分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他们的系统出现了CPU 100%的情况&#xff0c;让你帮忙看一下怎么回事&#xff1f;dump也拿到了&#xff0c;本想着这种情况让他多抓几个&#xff0c;既然有了就拿现有的分析吧。 二&#xff1a;WinDbg 分析…

socket回显服务器练习

前言 什么是回显服务器(echo server)呢&#xff1f; 回显服务器接收客户端发送的任何数据&#xff0c;并将这些数据原封不动地发送回客户端。回显服务器在连接成功的基础上只需要知道如何在客户端将收到的信息打印输出到控制台即可。我接下来会使用两种方法来输出&#xff0c;…

精通C++ STL(六):list的模拟实现

目录 类及其成员函数接口总览 结点类的模拟实现 构造函数 迭代器类的模拟实现 迭代器类存在的意义 迭代器类的模板参数说明 构造函数 运算符的重载 --运算符的重载 运算符的重载 !运算符的重载 *运算符的重载 ->运算符的重载 list的模拟实现 默认成员函数 构造函数 拷贝…

力扣 | 递增子序列 | 动态规划 | 最长递增子序列、最长递增子序列的个数、及其变式

文章目录 一、300. 最长递增子序列二、673. 最长递增子序列的个数三、变式1、646. 最长数对链2、1218. 最长定差子序列3、1027. 最长等差数列4、354. 俄罗斯套娃信封问题5、1964. 找出到每个位置为止最长的有效障碍赛跑路线 最长递增子序列&#xff1a;原序-递增数值问题 最长定…