T O P

[资源分享]     Python抓取必应搜索背景图片

  • By - 楼主

  • 2021-01-08 14:20:14
  • 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

    以下文章来源于编码珠玑 ,作者刘亚曦

    Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

    https://space.bilibili.com/523606542

     

     

    想必大多数小伙伴们已经对百度搜索的广告推荐机制深痛恶绝了,但凡哪怕涉及到一点点商业内容的搜索,出来的结果几乎全是广告。其实,除了谷歌搜索外,还有一个小众的搜索引擎,效果也并不比百度差多少,关键是搜索结果几乎没有广告,他就是微软的亲儿子,必应搜索。

     

     

    每次打开必应搜索,我们都会看到一张精美的背景图片,而且每天都更新。之前微软还提供了每张图片的下载地址,后来就直接取消了。但是如果我们能够获取这些背景图片并把它们设为电脑壁纸,岂不是一件很有趣的事情呢,那么如何才能获取到这些照片呢,今天我手把手教你写个Python脚本来抓取必应搜索的背景图片。

    首先,我们安装IDE,这里我选择Python最流行的PyCharm,大家可以到官网上下载:

    https://www.jetbrains.com/pycharm/download/#section=windows

    安装方法非常简单,直接下一步就行。

    安装完成后,打开IDE,我们创建一个Python的项目

     

    完成后,还要事先安装几个库,方便我们后面写代码使用,分别是:

    request

    BeautifulSoup4

    lxml

    安装方法很简单,我们点击编译器左上角的File->Settings弹出对话框:

     

     

    我们双击上图中的pip,在弹出的对话框里面分别搜索上面罗列的三个库名字,然后点击左下角的InstallPackage即可完成安装:

     

    完成以后,我们开始写代码:

    首先我们引入四个我们需要的包代码:

    if __name__=='__main__': for i in range(8): url = 'https://cn.bing.com/HPImageArchive.aspx?idx={}&n=1'.format(i) html = get_page(url) soup = BeautifulSoup(html, 'lxml') text = soup.find(name='url').string img_url = 'https://cn.bing.com' + text img_name = re.match('^/th\?id=(.*?)&', text).group(1)         download(img_url, '填你自己想保存的文件路径c:/..', img_name)

    然后我们定义一个get_page的函数来获取request请求得到的网页内容,不过为了伪装成浏览器访问,我们这里要更改一下User-Agent字段:

    def get_page(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'     } response = requests.get(url, headers=headers)       if response.status_code == 200:     #响应状态码表示服务器对请求的响应结果。200代表服务器响应成功,403代表禁止访问,404代表页面未找到             return response.text

    再来定义一个下载图片的函数download,传入的参数包含图片的url路径,你自己定义的文件夹路径还有图片的名称:

    def download(url, path, fname): response = requests.get(url) if response: with open(os.path.join(path, fname), 'wb') as f: f.write(response.content) print('successful: {} .'.format(fname)) else: print('faild: {}.'.format(fname))

    好了,上面两个主要的函数定义好了以后,我们再定义main函数,来不断调用他们,注意download函数的路径要填写你自己的文件夹路径。由于必应官方只保存了八张原图,所以我们就简单粗暴地只循环8次即可,代码如下:

    if __name__=='__main__': for i in range(8): url = 'https://cn.bing.com/HPImageArchive.aspx?idx={}&n=1'.format(i) html = get_page(url) soup = BeautifulSoup(html, 'lxml') text = soup.find(name='url').string img_url = 'https://cn.bing.com' + text img_name = re.match('^/th\?id=(.*?)&', text).group(1)         download(img_url, '填你自己想保存的文件路径c:/..', img_name)

    好了,上面就是完整的代码内容,我们试着运行一次:

     

    结果完全没问题,看文件夹里面的图片也保存下来了:

     

    随便打开一张,都是非常精美的:

     

    有没有发现图片非常的漂亮,随便找一张设置成电脑桌面看一下效果吧:

     

    可以看到效果非常的精美。

    本帖子中包含资源

    您需要 登录 才可以下载,没有帐号?立即注册