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

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

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

一、前言

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

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

二、爬虫代码

import json
import requests
import os
import re
import time
from colorama import Fore, Back, Style
import colorama

colorama.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:
                continue
            
            data = json.loads(res.content)
            imgs_data.extend(data['images'])
    except Exception as e:
        print(Fore.RED + Back.WHITE + "\n下载html文件失败,详情如下:")
        print(e)
        return

    img_url_count = len(imgs_data)
    if img_url_count == 0:
        print(Fore.RED + Back.WHITE + "\n从html文件中提取到的壁纸图片Url数量为零")
        return
    
    img_num = 0
    for 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:
                continue
            
            img_path = save_folder_path + '/' + img_name
            img_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 += 1
            time.sleep(1)
        except Exception as e:
            print(Fore.RED + Back.WHITE + "\n下载异常,详情如下:")
            print(e)
            continue
    
    if 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. 程序运行过程中会给出不同颜色的提示信息,如下图所示:
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

在Ubuntu24.04上安装Stable-Diffusion1.10.1版本

之前曾介绍过在Ubuntu22.04上安装Stable-Diffusion&#xff1a; 在Ubuntu22.04上部署Stable Diffusion_ubuntu stable dif-CSDN博客 这个安装我们使用conda python虚拟机。这次我们介绍的是在Ubuntu24.04安装Stable-Diffusion的最新版本V1.10.1&#xff08;截止到今天最新版&…

功能测试与接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的…

IDEA集成DeepSeek

使用版本: IDEA 2024.3&#xff0c;Python3.11 通过CodeGPT插件安装&#xff1a; 1. 安装Python环境&#xff0c;安装完成后python --version验证是否成功 2. DeepSeek官网获取API Key 3. IDEA中安装CodeGPT插件 文件->设置->插件&#xff0c;搜"CodeGPT" …

DeepSeek笔记(二):DeepSeek局域网访问

如果有多台电脑&#xff0c;可以通过远程访问&#xff0c;实现在局域网环境下多台电脑共享使用DeepSeek模型。在本笔记中&#xff0c;首先介绍设置局域网多台电脑访问DeepSeek-R1模型。 一、启动Ollama局域网访问 1.配置环境变量 此处本人的操作系统是Windows11&#xff0c;…

计算机视觉-OpenCV图像处理

1.Matplotlib数据可视化&#xff08;绘制图像直方图、可视化矩阵&#xff09; # Matplotlib 数据可视化&#xff08;绘制图像直方图、可视化矩阵&#xff09; # 本节主要讲解如何使用 Matplotlib 绘制图像直方图和可视化矩阵。 # 1. 绘制图像直方图 # 2. 可视化矩阵# 1. 绘制图…

golangAPI调用deepseek

目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…

闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体

闭源大语言模型的怎么增强 提示工程 检索增强生成 智能体 核心原理 提示工程:通过设计和优化提示词,引导大语言模型进行上下文学习和分解式思考,激发模型自身的思维和推理能力,使模型更好地理解和生成文本,增强其泛用性和解决问题的能力。检索增强生成:结合检索的准确…

《计算机视觉》——角点检测和特征提取sift

角点检测 角点的定义&#xff1a; 从直观上理解&#xff0c;角点是图像中两条或多条边缘的交点&#xff0c;在图像中表现为局部区域内的灰度变化较为剧烈的点。在数学和计算机视觉中&#xff0c;角点可以被定义为在两个或多个方向上具有显著变化的点。比如在一幅建筑物的图像…

具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例

随着机器人技术和人工智能的迅速发展&#xff0c;具身智能在各行业的应用日益广泛&#xff0c;尤其是在电力行业中的智能巡检领域。传统的电力巡检和维护工作通常需要人工操作&#xff0c;存在着高温、高压、强电磁场等危险环境&#xff0c;且效率较低。开关柜带电操作机器人作…

基于SpringBoot实现的大学社团平台系统实现功能八

一、前言介绍&#xff1a; 1.1 项目摘要 随着高校社团活动的日益丰富和多样化&#xff0c;学生对于社团管理和参与的需求也在不断增加。传统的社团管理方式往往存在效率低下、信息不透明等问题&#xff0c;无法满足现代学生对于便捷、高效社团管理的需求。因此&#xff0c;利…

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了(有proto接口了),前端还没搞完时(暂还没接入proto),后端可使用此请求,可自测 响应(SC)_可自行构建一个响应(有些特殊数据后端下发不了的),对数据进行测试 // 请…

使用synchronized解决高并发场景

synchronized能很好的解决高并发所带来的超卖等问题&#xff0c;但是synchronized也有属于它的缺陷&#xff0c;就是只适合单机模式&#xff0c;如果同时开启多个实例&#xff0c;那么还是会出现超卖的情况&#xff0c;下面就介绍一下synchronized使用方法&#xff0c;十分的简…

【Pytorch 库】自定义数据集相关的类

torch.utils.data.Dataset 类torch.utils.data.DataLoader 类自定义数据集示例1. 自定义 Dataset 类2. 在其他 .py 文件中引用和使用该自定义 Dataset torch_geometric.data.Dataset 类torch_geometric.data.Dataset VS torch.utils.data.Dataset 详细信息&#xff0c;参阅 tor…

Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网

| 线上研讨会时间&#xff1a;2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括&#xff1a;是否只需集成单一的工…

Wireshark 输出 数据包列表本身的值

在 Wireshark 中&#xff0c;如果你想输出数据包列表本身的值&#xff08;例如&#xff0c;将数据包的摘要信息、时间戳、源地址、目的地址等导出为文本格式&#xff09;&#xff0c;可以使用 导出为纯文本文件 的功能。以下是详细步骤&#xff1a; 步骤 1&#xff1a;打开 Wir…

解压rar格式的软件有哪些?8种方法(Win/Mac/手机/网页端)

RAR 文件是一种常见的压缩文件格式&#xff0c;由尤金・罗谢尔&#xff08;Eugene Roshal&#xff09;开发&#xff0c;因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩&#xff0c;大幅减小存储空间&#xff0c;方便数据传输与备份。然而&#xf…

java实现不带哨兵节点的双向链表(二)

概述 todo 扩展&#xff1a;实现链表节点的删除&#xff08;根据索引删除节点、删除第一个元素&#xff09;、添加的元素为数组最后一个元素&#xff08;addLast&#xff09;等 实现上一篇博客中提到的 根据索引删除节点。删除第一个元素。添加的元素为数组最后一个元素。 根…

AcWing 798. 差分矩阵

题目来源&#xff1a; 找不到页面 - AcWing 题目内容&#xff1a; 输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个操作&#xff0c;每个操作包含五个整数 x1,y1,x2,y2,c&#xff0c;其中 (x1,y1) 和 (x2,y2)表示一个子矩阵的左上角坐标和右下角坐标。 每个操作都要将…

【kafka系列】消费者

目录 获取消息 1. 消费者获取消息的流程逻辑分析 阶段一&#xff1a;消费者初始化 阶段二&#xff1a;分区分配与重平衡&#xff08;Rebalance&#xff09; 阶段三&#xff1a;消息拉取与处理 阶段四&#xff1a;偏移量提交 核心设计思想 2. 流程 关键点总结 常见参数…