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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

		self.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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

		self.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.main
		container = 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.string

			key_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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

		self.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.main
		container = 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.string

			self.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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

		self.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.main
		container = 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.string

			self.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.string

			self.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.string

			self.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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

	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.main
		container = 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.string

			self.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.string

			self.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.string

			self.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_list

	def 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 BeautifulSoup

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size

	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.main
		container = 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.string

			self.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.string

			self.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.string

			self.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_list

	def 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 Image

class WallPaperGetter():						# 创建一个类
	def __init__(self,id,size = "1080"):		# 定义初始函数,接收传入参数
		self.id = id
		self.size = size
		self.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.main
		container = 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.string

			self.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.string

			self.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.string

			self.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_list

	def 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 random

num = random.randint(10000,40000)
bing = WallPaperGetter(num)

系列文章

Python必应壁纸爬取系列(一):Bing当天壁纸太美你却爬取不到?使用Python,70行代码保存当天必应的超美壁纸屏保(Python获取Microsoft的当天唯美壁纸)
在这里插入图片描述

转载声明

本文2021年5月22日首发CSDN,如需转载,请附上原文链接:Python必应壁纸爬取系列(二):Bing唯美壁纸太多不知道选哪个?Python五行代码随机帮你挑选必应唯美屏保壁纸图片

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地摊主老袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值