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 contextlib模块使用示例
Feb 18 Python
python脚本替换指定行实现步骤
Jul 11 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python和shell获取文本内容的方法
Jun 05 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
Python读取csv文件实例解析
Dec 30 Python
python词云库wordCloud使用方法详解(解决中文乱码)
Feb 17 Python
python的json包位置及用法总结
Jun 21 Python
Python中Selenium库使用教程详解
Jul 23 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
PHP的FTP学习(三)
2006/10/09 PHP
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
2012/01/11 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php给图片加文字水印
2015/07/31 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
php getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
JSONP跨域GET请求解决Ajax跨域访问问题
2014/12/31 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
React Native实现地址挑选器功能
2017/10/24 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
Python Dataframe 指定多列去重、求差集的方法
2018/07/10 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
一个精品风格的世界:Atterley
2019/05/01 全球购物
会计毕业生自荐信
2013/11/21 职场文书
大跃进口号
2014/06/16 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
仓管员岗位职责
2015/02/03 职场文书
英文慰问信范文
2015/03/24 职场文书
创业计划书之旅游网站
2019/09/06 职场文书