Python必应壁纸爬取系列(二):Bing唯美壁纸太多不知道选哪个?Python五行代码随机帮你挑选必应唯美屏保壁纸图片
上一篇文章我们讲述了如何爬取必应的当天壁纸,那么今天我们就来实现如何写出一个随机必应壁纸或区域的程序。有了这个程序,我们就可以按照自己的喜好添加自己喜欢的文件并且下载了
五行代码实现程序效果图
文章目录
- 五行代码实现程序效果图
- 思路分析
- 代码分析
- 爬取图片简介
- 保存图片
- 随机获取壁纸
- **点这里,五行代码实现程序**
- 系列文章
- 转载声明
思路分析
我们先随机点入一个图片,可以发现这张图片的网址上面有很多的标签
我们随机点击一个标签后,观看网页网址所发生的变化,我们可以发现,这个网站访问地址的构成是这样的https://peapix.com/bing/tags/<keywords>
所以我们按照这个原则,尝试访问一下animal
,看看能不能进行访问
我们发现,这样子是可以访问的,甚至出现了一些详细的信息,所以我们可以更好地获取相关的图片
我们图片当中的一些简介也是很重要的,我们也可以尝试着将它爬取下来。所以我们首先实现爬取图片的介绍。接着再通过标签爬取图片的更多信息。
代码分析
爬取图片简介
首先为我们先要实现一些基础的代码,如下图,我们先定义一个类,然后创建一个获取图片信息的类。我们的代码也变得清晰易懂
接下来,我们就要分析我们如何获取我们的图片信息。首先我们先打开一个随机打开一个图片。在这里我就直接使用推荐的图片。它的地址是这样的https://peapix.com/bing/34916
。我们可以清晰的看到34916
就是这张图片的ID
这些都是我们需要爬取的对象,所以我们先创建一个程序,先看一下网页源代是长什么样的。
复制以下代码,如果出现了源代码,就证明你访问成功了,那么接下来我们开始分析网页的布局。这一步我们在浏览器给我们提供的开发者工具中进行。
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizeself.img_information()def img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))print(img.text)WallPaperGetter("34916")
通过分析我们发现,我们所需要的东西都是在Main当中,所以我们首先使用BS4来分析一下我们的Main页面下面的网页信息。首先我们先导入BS4模块
于是我们再获取我们想要获取的东西,我们继续回到开发者模式分析代码
其实我们的信息还是存储在div代码里面,所以我们创建一个新变量来存储这个container,把代码改成这样
好吧,其实运行结果没有什么区别。我们继续进行分析
我们发现,我们其实只用爬取前面两个div标签就行了。那么首先我们就先爬取这里
首先我们要获取蓝色字体的KEYWORDS
我们观察发现,这些值都是在我们LI标签下面的a标签的String,我们按照这个思路直接编写代码。最后将其加入列表,最后再打印列表
成功了,当然你也可以复制代码试一下
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizeself.img_information()def img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringkey_words_list.append(key_words_msg)print(key_words_list)WallPaperGetter("34916")
接下来我们开始访问第二个我们想要爬取的目标,我们再次打开网页
这是两个部分,但是名字都是一样的,我们先看一下图片
我们爬取IMG标签就可以看到我们爬取到了位置,然后就是获取src值
更改代码,将我们后续需要的变量设置为类当中可以访问
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizeself.img_information()def img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词self.key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringself.key_words_list.append(key_words_msg)# print(key_words_list)# 首先我们先获取一下我们的图片位置self.img_path = container.img["src"]self.img_word = container.img["alt"]# print(img_path,img_word)WallPaperGetter("34916")
我们接下来获取DateTime标签,和前面的操作也是一样的
然后我们获取简介,我们只需要获取所有的p标签的内容就可以了
接下来我们还是用同样的方式爬取标签
这样我们就制作完成了,接下开我们开始第二步,保存图片
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizeself.img_information()def img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词self.key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringself.key_words_list.append(key_words_msg)# print(key_words_list)# 首先我们先获取一下我们的图片位置self.img_path = container.img["src"]self.img_word = container.img["alt"]# print(img_path,img_word)# 接下来获取图片的时间self.img_time = container.time.string# print(self.img_time)# 获取简介self.introductory = ""for a in container.find_all("p"):msg = a.stringself.introductory = self.introductory + " " + msg# print(self.introductory)# 获取相关标签self.tag_list = []tag_list = container.find("div",class_="tag-list")# print(tag_list)for tag in tag_list.find_all("a"):tag_item = tag.stringself.tag_list.append(tag_item)print(self.tag_list)WallPaperGetter("34916")
保存图片
这一步真的是超简单,首先我们先转换一下清晰度,然后我们再下载就可以了,直接上代码
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizedef img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词self.key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringself.key_words_list.append(key_words_msg)# print(key_words_list)# 首先我们先获取一下我们的图片位置self.img_path = container.img["src"]self.img_word = container.img["alt"]# print(img_path,img_word)# 接下来获取图片的时间self.img_time = container.time.string# print(self.img_time)# 获取简介self.introductory = ""for a in container.find_all("p"):msg = a.stringself.introductory = self.introductory + " " + msg# print(self.introductory)# 获取相关标签self.tag_list = []tag_list = container.find("div",class_="tag-list")# print(tag_list)for tag in tag_list.find_all("a"):tag_item = tag.stringself.tag_list.append(tag_item)# print(self.tag_list)return self.key_words_list,self.img_time,self.img_path,self.img_word,self.introductory,self.tag_listdef save_img(self):self.img_path = self.img_path.replace("_480","_"+str(self.size))# 开始下载文件wallpaper_img = requests.get(self.img_path)# 获取网页内容wallpaper_img = wallpaper_img.content# 写入文件with open(self.img_word+".jpg","wb+")as img_write:img_write.write(wallpaper_img)img_write.close()if __name__ == '__main__':bing = WallPaperGetter("34916")bing_information = bing.img_information()bing_content = bing.save_img()
随机获取壁纸
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoupclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizedef img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词self.key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringself.key_words_list.append(key_words_msg)# print(key_words_list)# 首先我们先获取一下我们的图片位置self.img_path = container.img["src"]self.img_word = container.img["alt"]# print(img_path,img_word)# 接下来获取图片的时间self.img_time = container.time.string# print(self.img_time)# 获取简介self.introductory = ""for a in container.find_all("p"):msg = a.stringself.introductory = self.introductory + " " + msg# print(self.introductory)# 获取相关标签self.tag_list = []tag_list = container.find("div",class_="tag-list")# print(tag_list)for tag in tag_list.find_all("a"):tag_item = tag.stringself.tag_list.append(tag_item)# print(self.tag_list)return self.key_words_list,self.img_time,self.img_path,self.img_word,self.introductory,self.tag_listdef save_img(self):self.img_path = self.img_path.replace("_480","_"+str(self.size))# 开始下载文件wallpaper_img = requests.get(self.img_path)# 获取网页内容wallpaper_img = wallpaper_img.content# 写入文件with open(self.img_word+".jpg","wb+")as img_write:img_write.write(wallpaper_img)img_write.close()if __name__ == '__main__':num = random.randint(10000,40000)print(num)bing = WallPaperGetter(str(num))bing_information = bing.img_information()bing_content = bing.save_img()
点这里,五行代码实现程序
其实我想着我可以来一个标题党,就像大家今天访问的这样,五行代码实随机保存必应壁纸,具体就是创建两个文件,然后一个文件调用就行了
WallPapperGetter
# 程序名称 : WallPaperGetter.py
# 程序编写者 : ZesenYuan
# 程序运行环境 : Windows 10
# Python版本号 : Python 3.7
# 编写日期 : 2021年5月22日import requests
from bs4 import BeautifulSoup
from PIL import Imageclass WallPaperGetter(): # 创建一个类def __init__(self,id,size = "1080"): # 定义初始函数,接收传入参数self.id = idself.size = sizeself.img_information()def img_information(self): # 定义获取图片信息的函数# 开始访问我们所需要访问的信息页面img = requests.get("https://peapix.com/bing/"+str(self.id))# print(img.text)img_text = img.text# 获取我们的HTML解释器img_soup = BeautifulSoup(img_text,'html.parser')# 获取Main标签img_main = img_soup.maincontainer = img_main.div# print(container)# 创建一个列表用来接受关键词self.key_words_list = []# 爬取图片的关键词key_words = container.ol# 获取所有的li标签for i in key_words.find_all("li"):key_words_msg = i.a.stringself.key_words_list.append(key_words_msg)# print(key_words_list)# 首先我们先获取一下我们的图片位置self.img_path = container.img["src"]self.img_word = container.img["alt"]# print(img_path,img_word)# 接下来获取图片的时间self.img_time = container.time.string# print(self.img_time)# 获取简介self.introductory = ""for a in container.find_all("p"):msg = a.stringself.introductory = self.introductory + " " + msg# print(self.introductory)# 获取相关标签self.tag_list = []tag_list = container.find("div",class_="tag-list")# print(tag_list)for tag in tag_list.find_all("a"):tag_item = tag.stringself.tag_list.append(tag_item)# print(self.tag_list)self.save_img()return self.key_words_list,self.img_time,self.img_path,self.img_word,self.introductory,self.tag_listdef save_img(self):self.img_path = self.img_path.replace("_480","_"+str(self.size))# 开始下载文件wallpaper_img = requests.get(self.img_path)# 获取网页内容wallpaper_img = wallpaper_img.content# 写入文件with open(self.img_word+".jpg","wb+")as img_write:img_write.write(wallpaper_img)img_write.close()# 然后打开图片img = Image.open(self.img_word+".jpg")img.show()
调用代码
from WallPaperGeter import WallPaperGetter
import randomnum = random.randint(10000,40000)
bing = WallPaperGetter(num)
系列文章
Python必应壁纸爬取系列(一):Bing当天壁纸太美你却爬取不到?使用Python,70行代码保存当天必应的超美壁纸屏保(Python获取Microsoft的当天唯美壁纸)
转载声明
本文2021年5月22日首发CSDN,如需转载,请附上原文链接:Python必应壁纸爬取系列(二):Bing唯美壁纸太多不知道选哪个?Python五行代码随机帮你挑选必应唯美屏保壁纸图片
Python必应壁纸爬取系列(二):Bing唯美壁纸太多不知道选哪个?Python五行代码随机帮你挑选必应唯美屏保壁纸图片相关推荐
- python 全自动化爬取必应图片
python 全自动化爬取必应图片 from selenium import webdriver import requests import time import re import urllib ...
- Python爬虫实例 wallhaven网站高清壁纸爬取。
文章目录 Python爬虫实例 wallhaven网站高清壁纸爬取 一.数据请求 1.分析网页源码 2.全网页获取 二.数据处理 1.提取原图所在网页链接 2.获取高清图片地址及title 三.下载图 ...
- 【Python实战】爬取5K分辨率超清唯美壁纸
简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物.然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁 ...
- 【python爬虫】爬取Bing词典的单词存到SQLite数据库(加了pyqt5界面显示)
之前一篇博客的连接: [python爬虫]爬取Bing词典的单词存到SQLite数据库 相比之前这篇文章中的源码,这次带UI的代码不仅改进了UI界面,爬虫部分的代码也有改进. 展示 代码github ...
- Python爬取系列妹子图实战总结(程序员节福利哟)
Python爬取系列妹子图(福利哟~~~) 用到的模块:requests 和 lxml中的html 今天呢是10月24日,天气一如既往的好,也是传说中的程序员节,来爬波妹子图岂不美哉!!! 开始操作: ...
- 凌晨一点肝文⭐1920×1080⭐高清必应壁纸爬取,只为爬虫小白们入门!!!
文章目录 前言 网页分析 多页爬取URL部分 图片下载URL部分 图片下载 爬取结果(高清大图,看着都是享受) 完整代码 最后 爬虫仅供学习,其余概不负责,如需转载请私信问我!!! 前言 本文爬虫源码 ...
- python手机壁纸超清_详解Python静态网页爬取获取高清壁纸
前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...
- Python爬虫入门教程 26-100 知乎文章图片爬取器之二
1. 知乎文章图片爬取器之二博客背景 昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中 ...
- wallhaven的热度壁纸爬取(入门级爬虫)——python
wallhaven的热度壁纸爬取 首先介绍一下wallhaven 过程 首先介绍一下wallhaven wallhaven这个壁纸网站是一个壁纸质量十分高的网站,最主要它还是一个免费的壁纸网站,于是突 ...
最新文章
- matlab处理txt文件数据
- 如何使用Python和Tkinter构建Toy Markdown编辑器
- 深度学习入门,一文讲解神经网络的构成、训练和算法
- unity获取脚本组件_Unity3D【脚本】获取游戏物体的Animator组件,并且修改动画属性 | 学步园...
- logstash-input-redis源码解析
- 数据库-MySQL-数据库和表
- centos安装mysql5.6系统崩溃_CentOS中安装MySQL5.6报错的解决方法
- android RecyclerView实战
- 第十一篇、HTML5隐藏播放器播放背景音乐
- php评论倒序 zblog_ZblogPHP调用最新、评论最多、浏览最多、置顶文章
- 阿里巴巴的商品主图视频要怎么保存比较快
- 三插头内部结构图_三孔插座内部结构
- 手机模拟器自带root_VMOS Pro Android 手机上的模拟器 (手机版虚拟机)
- python 桌面应用 h5_hdf 5文件格式及python中利用h5py模块读写h5文件
- 新浪20年:独行侠的影响力之路
- 快消行业巨量引擎营销攻略
- DBG、DMB、DSB 和 ISB
- 天猫出海!12亿国货“一店卖全球”
- 这没啥挑的,全新java前后端开发需掌握的框架及技术
- 基于全球价值链的电子商务整合创新问题研究[ 转]
热门文章
- for···in和for···of的区别
- ubuntu环境下rm -rf误删除问题
- 安卓基础-day03-20180118
- Tensorflow2.0 使用Kera 迭代器 加载图像分割训练集
- 为什么用对数收益率,而不是算数收益率 --因为可加性
- 【iOS_Swift_Alamofire实现网络请求】
- xingkongmix雅思自学笔记(22/12/24)day01
- 学生限时答题评测系统
- 用JAVA写的电子书切割器 欢迎修改意见至wmm204@126.com
- Jetpack全家桶(一)之简介