【爬虫项目】必应壁纸

mark

爬虫目标

下载必应搜索的背景壁纸

  • 使用模块:requests、gevent
  • 接口(get):https://cn.bing.com/HPImageArchive.aspx
  • 主要参数
    "format":"js",
    "idx":"0",
    "n":"20", # 壁纸数量,壁纸本身没几张,大了也没有
    

爬虫主体

获取壁纸连接

返回包含壁纸URL 和 hash码的字典的列表

def get_url_title():
    url = "https://cn.bing.com/HPImageArchive.aspx"
    params = {
        "format":"js",
        "idx":"0",
        "n":"20", # 壁纸数量,壁纸本身没几张,大了也没有
    }
    r = requests.get(url=url,params=params).json()
    # 存 url 和 hsh 的列表  
    url_title_list = list()
    # 解析 json
    for imgdata in r.get("images"):
        hsh =  imgdata.get("hsh")
        imgurl = "https://cn.bing.com" +imgdata.get("url")
        # print(url,copyright)
        url_title_list.append({"url" :imgurl,"hsh" :hsh})
    return url_title_list

下载并保存壁纸

提前创建 imgs/ 文件夹

def download(url_title):
    # 下载壁纸
    img_content = requests.get(url_title.get("url")).content
    # 保存文件
    print(url_title.get("hsh"))
    with open( "imgs/" + url_title.get("hsh") + ".jpg","wb+") as file:
        file.write(img_content)

主逻辑

if __name__ == '__main__':
    url_titles = get_url_title()
    # 协程队列
    spawnList = [gevent.spawn(download,url_title) for url_title in url_titles]
    # 等待协程队列执行
    gevent.joinall(spawnList)
发表评论 / Comment

用心评论~