上一篇文章我们讲述了如何爬取必应的当天壁纸,那么今天我们就来实现如何写出一个随机必应壁纸或区域的程序。有了这个程序,我们就可以按照自己的喜好添加自己喜欢的文件并且下载了

五行代码实现程序效果图

文章目录

  • 五行代码实现程序效果图
  • 思路分析
  • 代码分析
    • 爬取图片简介
  • 保存图片
  • 随机获取壁纸
  • **点这里,五行代码实现程序**
  • 系列文章
  • 转载声明

思路分析


我们先随机点入一个图片,可以发现这张图片的网址上面有很多的标签

我们随机点击一个标签后,观看网页网址所发生的变化,我们可以发现,这个网站访问地址的构成是这样的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五行代码随机帮你挑选必应唯美屏保壁纸图片相关推荐

  1. python 全自动化爬取必应图片

    python 全自动化爬取必应图片 from selenium import webdriver import requests import time import re import urllib ...

  2. Python爬虫实例 wallhaven网站高清壁纸爬取。

    文章目录 Python爬虫实例 wallhaven网站高清壁纸爬取 一.数据请求 1.分析网页源码 2.全网页获取 二.数据处理 1.提取原图所在网页链接 2.获取高清图片地址及title 三.下载图 ...

  3. 【Python实战】爬取5K分辨率超清唯美壁纸

    简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物.然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁 ...

  4. 【python爬虫】爬取Bing词典的单词存到SQLite数据库(加了pyqt5界面显示)

    之前一篇博客的连接: [python爬虫]爬取Bing词典的单词存到SQLite数据库 相比之前这篇文章中的源码,这次带UI的代码不仅改进了UI界面,爬虫部分的代码也有改进. 展示 代码github ...

  5. Python爬取系列妹子图实战总结(程序员节福利哟)

    Python爬取系列妹子图(福利哟~~~) 用到的模块:requests 和 lxml中的html 今天呢是10月24日,天气一如既往的好,也是传说中的程序员节,来爬波妹子图岂不美哉!!! 开始操作: ...

  6. 凌晨一点肝文⭐1920×1080⭐高清必应壁纸爬取,只为爬虫小白们入门!!!

    文章目录 前言 网页分析 多页爬取URL部分 图片下载URL部分 图片下载 爬取结果(高清大图,看着都是享受) 完整代码 最后 爬虫仅供学习,其余概不负责,如需转载请私信问我!!! 前言 本文爬虫源码 ...

  7. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

  8. Python爬虫入门教程 26-100 知乎文章图片爬取器之二

    1. 知乎文章图片爬取器之二博客背景 昨天写了知乎文章图片爬取器的一部分代码,针对知乎问题的答案json进行了数据抓取,博客中出现了部分写死的内容,今天把那部分信息调整完毕,并且将图片下载完善到代码中 ...

  9. wallhaven的热度壁纸爬取(入门级爬虫)——python

    wallhaven的热度壁纸爬取 首先介绍一下wallhaven 过程 首先介绍一下wallhaven wallhaven这个壁纸网站是一个壁纸质量十分高的网站,最主要它还是一个免费的壁纸网站,于是突 ...

最新文章

  1. matlab处理txt文件数据
  2. 如何使用Python和Tkinter构建Toy Markdown编辑器
  3. 深度学习入门,一文讲解神经网络的构成、训练和算法
  4. unity获取脚本组件_Unity3D【脚本】获取游戏物体的Animator组件,并且修改动画属性 | 学步园...
  5. logstash-input-redis源码解析
  6. 数据库-MySQL-数据库和表
  7. centos安装mysql5.6系统崩溃_CentOS中安装MySQL5.6报错的解决方法
  8. android RecyclerView实战
  9. 第十一篇、HTML5隐藏播放器播放背景音乐
  10. php评论倒序 zblog_ZblogPHP调用最新、评论最多、浏览最多、置顶文章
  11. 阿里巴巴的商品主图视频要怎么保存比较快
  12. 三插头内部结构图_三孔插座内部结构
  13. 手机模拟器自带root_VMOS Pro Android 手机上的模拟器 (手机版虚拟机)
  14. python 桌面应用 h5_hdf 5文件格式及python中利用h5py模块读写h5文件
  15. 新浪20年:独行侠的影响力之路
  16. 快消行业巨量引擎营销攻略
  17. DBG、DMB、DSB 和 ISB
  18. 天猫出海!12亿国货“一店卖全球”
  19. 这没啥挑的,全新java前后端开发需掌握的框架及技术
  20. 基于全球价值链的电子商务整合创新问题研究[ 转]

热门文章

  1. for···in和for···of的区别
  2. ubuntu环境下rm -rf误删除问题
  3. 安卓基础-day03-20180118
  4. Tensorflow2.0 使用Kera 迭代器 加载图像分割训练集
  5. 为什么用对数收益率,而不是算数收益率 --因为可加性
  6. 【iOS_Swift_Alamofire实现网络请求】
  7. xingkongmix雅思自学笔记(22/12/24)day01
  8. 学生限时答题评测系统
  9. 用JAVA写的电子书切割器 欢迎修改意见至wmm204@126.com
  10. Jetpack全家桶(一)之简介