Python 爬取必应壁纸的实例讲解


Posted in Python onFebruary 24, 2020

最近看了下python,就想着获取下bing的图片,每天定时爬取,保存到本地,可以做背景图片用。 也在网上看了一些其他的例子。就自己动手写了一个小的爬图片的python脚本。

我们进来来爬取的是必应壁纸的相关实例,代码如下:

import re
import os
import requests
from time import sleep

headers = {
  "User-Agent": ("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) "
          "Gecko/20100101 Firefox/64.0")
}

def get_index(resolution, index=1):
  url = f"https://bing.ioliu.cn/ranking?p={index}"
  res = requests.get(url, headers=headers)
  urls = re.findall('pic=(.*?)\\.jpg', res.text)
  _old_resolution = urls[1].split("_")[-1]
  return {url.split("/")[-1].replace(_old_resolution, resolution): url.replace(_old_resolution, resolution) + ".jpg"
      for url in urls}

def download_pic(pics):
  if os.path.exists('F:\\必应壁纸'):
    pass
  else:
    os.mkdir('F:\\必应壁纸')
    print('目录创建成功')
  try:
    for pic_name, pic_url in pics.items():
      res = requests.get(pic_url, headers=headers)
      with open(f"F:\\必应壁纸\\{pic_name}.jpg", mode="wb") as f:
        f.write(res.content)
      print(f"{pic_name} 下载完成")
  except Exception as e:
    print("下载出错", e)

def input_index():
  print("必应壁纸下载工具, 本工具未经资源站授权.")
  print("仅做学习和交流之用, 随时有可能停止维护.")
  print("目前资源站收容页数为87,当前仅提供1920x1080分辨率下载")
  while True:
    sleep(0.1)
    index = input("请输入要下载的页数(Max=87):")
    try:
      if index == "Q":
        exit()
      index = 87 if int(index) > 87 else int(index)
      return index
    except ValueError:
      print("请输入数字, 或输入Q退出!")

def main():
  index = input_index()
  i = 1
  while i <= index:
    print(f"当前第{i}页,共需要下载{index}页")
    pics = get_index("1920x1080", i)
    download_pic(pics)
    i += 1
  print("下载完成,将在3秒后关闭...")
  sleep(1)
  print("2")
  sleep(1)
  print("1")
  sleep(1)
  print("0")

if __name__ == '__main__':
  main()

以上就是Python 爬取必应壁纸的实例讲解的详细内容,更多关于Python 爬取必应壁纸的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
使用Python的PEAK来适配协议的教程
Apr 14 Python
Flask框架Flask-Login用法分析
Jul 23 Python
Python3并发写文件与Python对比
Nov 20 Python
基于python连接oracle导并出数据文件
Apr 28 Python
django rest framework serializers序列化实例
May 13 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
Python模块常用四种安装方式
Oct 20 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
Feb 22 Python
pycharm debug 断点调试心得分享
Apr 16 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 Python
python 使用pandas读取csv文件的方法
Dec 24 Python
Python unittest工作原理和使用过程解析
Feb 24 #Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 #Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 #Python
关于多元线性回归分析——Python&amp;SPSS
Feb 24 #Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 #Python
sklearn+python:线性回归案例
Feb 24 #Python
深入理解Tensorflow中的masking和padding
Feb 24 #Python
You might like
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
调试PHP程序的多种方法介绍
2014/11/06 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
js实现千分符和保留几位小数的简单实例
2016/08/01 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
微信小程序使用wx.request请求服务器json数据并渲染到页面操作示例
2019/03/30 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
django如何连接已存在数据的数据库
2018/08/14 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
Python爬取某平台短视频的方法
2021/02/08 Python
俄罗斯女装店:12storeez
2019/10/25 全球购物
幼儿园中班区域活动总结
2014/07/09 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis