背景
必应每日提供一图作为网站背景
此文实现了如何抓取其结果的过程
分析
bing提供的接口 :
https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1
返回结果
抓取的图片
知识点
如何下载url图片?
使用request 中的get函数 get(pic_url, stream=True)
Demo
具体程序如下所示:
import os
import json
from requests import get
class ImageDownloader:
def __init__(self):
self.root = os.getcwd()
self.img_dir = os.path.join(self.root, 'img')
self.Json_data = ''
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
os.makedirs(self.root, exist_ok=True)
os.makedirs(self.img_dir, exist_ok=True)
def spyder(self):#定义一个爬虫函数
index = 0
url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx={%d}&n=1&mkt=zh-CN' % (index)
response = get(url,headers=self.headers)
response.encoding='utf-8'
self.Json_data = response.json()
def get_img_and_save_file(self):
pic_url = r'https://www.bing.com{0}'.format(self.Json_data['images'][0]['url'])
start_date = self.Json_data['images'][0]['startdate']
print(pic_url)
print(start_date)
pic = get(pic_url, stream=True)
if (pic.status_code == 200):
open(r'./img/{0}.png'.format(start_date), 'wb').write(pic.content)
print('Create Image Success!')
else:
print('Create Image Faild!')
def main() -> None:
Downloader = ImageDownloader()
Downloader.spyder()
Downloader.get_img_and_save_file()#提取图片
if __name__ == '__main__':
main()
总结
使用requests 可以大大的简化下载图片的过程