通过BingAPI爬取Bing半个月内壁纸

embedded/2025/2/22 4:25:52/

通过BingAPI爬取Bing半个月内壁纸

  • 一、前言
  • 二、爬虫代码
  • 三、代码说明

一、前言

爬取Bing搜索网站首页壁纸的方式主要有两种,第一种为间接爬取,即并不直接对Bing网站发起请求,而是对那些收集汇总了Bing壁纸的网站发起请求,爬取图片。第二种为直接爬取,即直接对Bing网站发起访问。

本文使用第二种,通过Bing官方提供的一种API进行壁纸下载,通过这种方式可以下载从下载当天起半个月内Bing搜索网站首页使用过的壁纸。
在这里插入图片描述

二、爬虫代码

python">import json
import requests
import os
import re
import time
from colorama import Fore, Back, Style
import coloramacolorama.init(autoreset = True)def download_imgWallpaper_of_bing(headers, save_folder_path = None):"""下载必应从昨天起前15天的壁纸图片"""print(Fore.GREEN + Style.BRIGHT + '\n' + '-' * 30 + 'Bing必应 壁纸图片' + '-' * 30 + '\n')if save_folder_path is None:save_folder_path = 'bing壁纸图片'if not os.path.exists(save_folder_path):os.mkdir(save_folder_path)exist_imgs = os.listdir(save_folder_path)url01 = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=7'url02 = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=8&n=8'imgs_data = []try:for url in [url01, url02]:print(Fore.BLUE + Style.BRIGHT + '\n正在下载html文件,地址如下:')print(url)res = requests.get(url, headers = headers, timeout = (5, 5))res.raise_for_status()if len(res.content) < 10:continuedata = json.loads(res.content)imgs_data.extend(data['images'])except Exception as e:print(Fore.RED + Back.WHITE + "\n下载html文件失败,详情如下:")print(e)returnimg_url_count = len(imgs_data)if img_url_count == 0:print(Fore.RED + Back.WHITE + "\n从html文件中提取到的壁纸图片Url数量为零")returnimg_num = 0for img_data in imgs_data:try:img_name = img_data['startdate'] + '_' + img_data['copyright'] + '.jpg'img_name = re.sub(r'[<>:"/\\|?*]', '_', img_name)if img_name in exist_imgs:continueimg_path = save_folder_path + '/' + img_nameimg_url = 'http://cn.bing.com' + img_data['url']print(Fore.BLUE + Style.BRIGHT + "\n正在下载第%s/%s张图片,地址如下:" % (img_num + 1, img_url_count))print(img_url)res = requests.get(img_url, headers = headers, timeout = (5, 10))res.raise_for_status()with open('%s' % img_path,'wb') as f:f.write(res.content)print(Fore.BLUE + Style.BRIGHT + "完成下载")img_num += 1time.sleep(1)except Exception as e:print(Fore.RED + Back.WHITE + "\n下载异常,详情如下:")print(e)continueif img_num == img_url_count:print(Fore.YELLOW + Style.BRIGHT + "\n所有壁纸图片下载完成,保存文件夹为:" + os.path.abspath(save_folder_path))else:print(Fore.YELLOW + Style.BRIGHT + "\n壁纸图片已下载%s,未下载%s张,保存文件夹为%s" % (img_num, img_url_count - img_num, os.path.abspath(save_folder_path)))if __name__ == '__main__':headers={}headers["Accept"]="*/*"headers["Accept-Encoding"]="gzip, deflate, br, zstd"headers["Accept-Language"]="zh-CN,zh;q=0.9"headers["Connection"]="keep-alive"headers["Cache-Control"]="max-age=0"headers["Upgrade-Insecure-Requests"]="1"headers["User-Agent"]="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"download_imgWallpaper_of_bing(headers)

三、代码说明

给出的代码为python代码,代码会下载从下载当天起15天Bing网站使用的壁纸。

  1. 下载图片是以Bing的使用日期+图片说明命名,由于时差的原因当天使用的壁纸日期会是前一天的日期;
  2. 如果不指定保存文件夹,则会在当前运行目录自动创建“bing壁纸图片”文件夹,将下载图片保存在其中;
  3. 下载图片前会根据文件名对保存文件夹进行检查,防止重复下载壁纸
  4. 程序运行过程中会给出不同颜色的提示信息,如下图所示:
    在这里插入图片描述

http://www.ppmy.cn/embedded/164227.html

相关文章

中电金信:数字基础设施未来展望·行业定制与开源融合

随着数字化向数智化的演进&#xff0c;各行各业对新型数字基础设施的需求不断攀升。在技术层面&#xff0c;云原生和平台化已经成为构建行业数字基础设施的普遍选择。在这一进程中&#xff0c;不仅要满足行业对极致性能的特殊需求&#xff0c;实现运维与管理的高效性&#xff0…

观察者模式示例代码

观察者模式定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖它的对象都会得到通知并自动更新。常见于消息队列&#xff08;MQ&#xff09;、Zookeeper 事件通知等场景。 import java.util.ArrayList; import java.util.List;// 主题接口…

GRU是什么?GRU对LSTM做了哪些改动?

GRU通过简化门控机制、合并状态向量和简化计算流程等方式&#xff0c;降低了模型的复杂度&#xff0c;提高了训练速度&#xff0c;并且在一些任务上表现优异。 1. 简化了门控机制&#xff1a;GRU只有两个门控单元&#xff08;更新门和重置门&#xff09;。GRU的更新门控制了前…

解决macos安装docker后不能远程连接的问题

解决 macOS 安装 Docker 后无法远程连接的问题 在 macOS 上安装 Docker 之后&#xff0c;默认情况下可能无法通过远程连接&#xff08;如 docker 命令&#xff09;来管理容器。这是因为 macOS 的 Docker 实例运行在一个沙盒环境中&#xff0c;并未暴露 Docker 守护进程的 sock…

基于Python+Sqlite实现的选课系统

基于PythonSqlite实现的选课系统 1.选课系统数据库设计 1.1从ER图到表结构 实体集 课程信息 course (course_id, title, credits, dept_name)开课信息 section (course_id, section_id, start, end, classroom_no, limit, day, lesson)账户信息 account (ID, password, role…

Linux-C/C++《C/8、系统信息与系统资源》

在应用程序当中&#xff0c;有时往往需要去获取到一些系统相关的信息&#xff0c;譬如时间、日期、以及其它一些系统相关信息&#xff0c;本章将向大家介绍如何通过 Linux 系统调用或 C 库函数获取系统信息&#xff0c;譬如获取系统时间、日期以及设置系统时间、日期等&#xf…

用deepseek学大模型05逻辑回归

deepseek.com:逻辑回归的目标函数&#xff0c;损失函数&#xff0c;梯度下降 标量和矩阵形式的数学推导&#xff0c;pytorch真实能跑的代码案例以及模型,数据&#xff0c;预测结果的可视化展示&#xff0c; 模型应用场景和优缺点&#xff0c;及如何改进解决及改进方法数据推导。…

【LeetCode Hot100 矩阵】矩阵置零、螺旋矩阵、旋转图像、搜索二维矩阵II

矩阵 1. 矩阵置零&#xff08;Set Matrix Zeroes&#xff09;解题思路步骤&#xff1a; 代码实现 2. 螺旋矩阵&#xff08;Spiral Matrix&#xff09;解题思路具体步骤&#xff1a; 代码实现 3. 旋转矩阵 90 度解决思路代码实现 5. 搜索二维矩阵中的目标值解决思路代码实现 1. …