爬虫实践 必应每日一图

背景

必应每日提供一图作为网站背景

此文实现了如何抓取其结果的过程

分析

bing提供的接口 :

https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

返回结果

抓取的图片

知识点

如何下载url图片?
使用request 中的get函数 get(pic_url, stream=True)

Demo

具体程序如下所示:

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 可以大大的简化下载图片的过程

posted on 2021-10-08 15:20  小王的一天  阅读(64)  评论(0)    收藏  举报

导航