zoukankan      html  css  js  c++  java
  • Python爬虫之提取Bing搜索的背景图片并设置为Windows的电脑桌面

      鉴于现阶段国内的搜索引擎还用不上Google, 笔者会寻求Bing搜索来代替。在使用Bing的过程中,笔者发现Bing的背景图片真乃良心之作,十分赏心悦目,因此,笔者的脑海中萌生了一个念头:能否自己做个爬虫,可以提取Bing搜索的背景图片并设置为Windows的电脑桌面呢?Bing搜索的页面如下:

    Bing搜索页面
      于是在一个风雨交加的下午,笔者开始了自己的探索之旅。当然,过程是曲折的,但笔者尝试着能把它讲得简单点。
      首先,我们需要借助一些Python模块的帮助,它们是:

    • urllib
    • selenium
    • pywin32

    当然,你的电脑上也需要安装PhantomJS, 因为,我们需要动态地爬取网页。

       好了,准备工作就绪。接下来就是Python代码时间了,完整的代码如下:

    # -*- coding: utf-8 -*-
    """
       此程序用于提取Bing搜索的背景图片并设置为Windows的电脑桌面
    """
    from urllib.request import urlretrieve
    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    import win32api,win32con,win32gui
    
    #利用PhantomJS加载网页
    browser = webdriver.PhantomJS()
    # 设置最大等待时间为30s
    browser.set_page_load_timeout(30)
    
    url = 'https://cn.bing.com/'
    try:
        browser.get(url)
    except TimeoutException:
        # 当加载时间超过30秒后,自动停止加载该页面
        browser.execute_script('window.stop()')
    
    # 从id为bgDiv的标签中获取背景图片的信息
    t = browser.find_element_by_id('bgDiv')
    bg = t.get_attribute('style')
    
    # 从字符串中提取背景图片的下载网址
    start_index = bg.index('(')
    end_index = bg.index(')')
    img_url = bg[start_index+1: end_index]
    
    # 下载该图片到本地
    img_path = 'E://Bing.jpg'
    urlretrieve(img_url, img_path)
    
    # 将下载后的图片设置为Windows系统的桌面
    # 打开指定注册表路径
    reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\Desktop", 0, win32con.KEY_SET_VALUE)
    # 最后的参数:2拉伸,0居中,6适应,10填充,0平铺
    win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")
    # 最后的参数:1表示平铺,拉伸居中等都是0
    win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")
    # 刷新桌面
    win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, img_path, win32con.SPIF_SENDWININICHANGE)
    

    运行这个程序,稍等片刻,我们就会发现自己的电脑壁纸已经换成了今天Bing搜索页面的背景图片,真的是very amzing.

    桌面壁纸

    本次分享到此结束,欢迎大家交流~~

  • 相关阅读:
    Oracle 与.NET Framework 数据类型映射
    mvc使用JsonResult返回Json数据(转)
    like参数替换
    jquery 等比缩放
    【linq to sql】已有打开的与此命令相关联的 DataReader,必须首先将它关闭
    脚本
    2012年计划——开始我的敏捷个人之行
    在Win7 64位机器上安装Oracle 10客户端以及PlSql
    词干提取算法Porter Stemming Algorithm解读
    开源搜索框架Lucene学习之分词器(2)——TokenFilter类及其子类
  • 原文地址:https://www.cnblogs.com/jclian91/p/9574031.html
Copyright © 2011-2022 走看看