引言

看到 bing 的高清大图,觉得质量都很高,都挺好看的,升到 window 10 以后,每次开机的画面都不一样,也觉得很有特点,我们来做一个简单的抓图 Demo 版脚本。

版权所有:_ OE _, 转载请注明出处:http://blog.csdn.net/csnd_ayo

简介

操作系统: window 10
编程环境:Python 3.6.1
编程IDE:PyCharm


  • 引言
  • 简介
  • bing 接口
  • 总纲
  • 函数
  • 调用
  • 源码
  • 效果

bing 接口

首先来介绍一下,我通过请求 bing 搜索引擎的时候,截取到的一个 http 请求接口。

/*
* @param : format 返回的格式, js(json),xml
* @param : idx 图片下标
* @param : n 图片数量
* /原请求:http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=0&pid=hp&video=1分析后:http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1/*
* 可以通过截取xml的url部分与bing官网进行拼接,已达到获取高清图片的目的。
* 例如:http://www.bing.com/az/hprichbg/rb/Dipper_ZH-CN11205462091_1366x768.jpg
* 后缀的分辨率可以改成常用的显示屏分辨率,已达到修改照片分辨率的目的。
* 例如:http://www.bing.com/az/hprichbg/rb/Dipper_ZH-CN11205462091_1920*1080.jpg
*/

总纲

一个抓图的过程,我们涉及以下几步:

  1. 打开网页(获得网页源码)

  2. 检索网页(获得图片URL)

  3. 拼接URL(获得图片的真实地址)

  4. 保存图片

    1. 打开网页(获取图片数据)

    2. 保存本地(保存成本地文件)

函数

对应总纲内的逻辑步骤,我们将实现4个函数

# 打开网页
def open_url(url):pass# 获得 response 中的图片 url
def find_picture_url(http_response):pass# url 拼接
def url_joint(picture_url):pass# 保存 url
def save_url_image(url,addr):pass

调用

根据总纲的逻辑步骤,我们将实现如下的调用

# 打开网页
http_response = open_url("url地址")# 检索网页
temp_picture_url = find_picture_url(http_response)# 拼接URL
picture_url = url_joint(temp_picture_url)# 保存图片
save_url_image(picture_url, "1.jpg")

源码

# -*- coding:utf-8 -*-import urllib.request
import datetime# @brief  打开网页
# url : 网页地址
# @return 返回网页数据
def open_url(url):# 根据当前URL创建请求包req = urllib.request.Request(url)# 添加头信息,伪装成浏览器访问req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36')# 发起请求response = urllib.request.urlopen(req)# 返回请求到的HTML信息return response.read()# 找图片
def find_picture_url(http_response):
# 查找当前页面所有图片的URLhttp_response = http_response.decode('utf-8')img_addrs = []# 找图片a = http_response.find('<url>')#不带停,如果没找到则退出循环while a != -1:# 以a的位置为起点,找以jpg结尾的图片b = http_response.find('</url>', a, a+255)# 如果找到就添加到图片列表中if b != -1:img_addrs.append(http_response[a+5:b])# 否则偏移下标else:b = a + 5# 继续找a = http_response.find('<url>', b)return img_addrs# url 拼接
def url_joint(picture_url):return "http://cn.bing.com/" + picture_url# @brief 保存图片
# url : 图片url
# addr  : 保存的地址
def save_picture(url,addr):with open(addr, 'wb') as f:img = open_url(url_joint(url))if img:f.write(img)print("图片已保存")returni = 0
while i < 5:i += 1# [1] 打开网页temp_str = "http://cn.bing.com/HPImageArchive.aspx?format=xml&idx=%d&n=100" % (i)response = open_url(temp_str)# [2] 找到图片list_picture = find_picture_url(response)local_time = datetime.datetime.now().microsecondj = 0# [3] 保存图片for picture_url in list_picture:j += 1local_time_file_name = str(local_time) + str(j) + ".jpg"print(local_time_file_name)save_picture(picture_url, local_time_file_name)

效果

Python3 爬虫 - 爬取 bing 高清桌面大图相关推荐

  1. 爬虫爬取大量高清壁纸图片

    爬虫爬取大量高清壁纸 思路: 首先从网页入手,观察网页整体结构,因为本段代码使用的是Xpath解析(想了解Xpath解析可以看上一篇) import requests from lxml import ...

  2. python爬虫爬取海量高清图片,小白都能学习的简单操作

    正文 目标网站divinl 首先看看这网站是怎样加载数据的; 打开网站后发现底部有下一页的按钮,ok,爬这个网站就很简单了; 日文的 我们目标是获取每张图片的高清的源地址,并且下载图片到桌面; 先随便 ...

  3. 使用Python爬取微博高清美女大图

    打开微博官网,这里以爬取美女博主Duebass的所有图片为例,首先打开她的主页 主页中显示的都是一些小图,我们点击其中的某一张图片,就可以查看她的大图了. 打开F12查看图片的地址信息, //wx4. ...

  4. Python 网络爬虫:爬取4K高清美图

    爬取4K高清美图 这篇爬虫主要是用来爬取网站高清4K图片,这也是笔者学初学爬虫的时候最先写一个的爬虫脚本,现在回过头来重新梳理一下,也算是对从前知识的一个总结,希望对大家有所帮助! 文章目录 爬取4K ...

  5. python爬虫系列(2):分析Ajax 爬取搜狗高清壁纸

    这次我们来分析一下Ajax(至于Ajax是什么意思请自行百度了,这里就不过多解释),爬取一些高清壁纸,等待下载到本地之后,然后我们再慢慢的筛选这些壁纸.那么这次的目标就是搜狗壁纸,啥1280*720的 ...

  6. Python爬虫从入门到精通:(9)数据解析_xpath解析2_爬取4K高清动漫图片_Python涛哥

    使用xpath爬取4K高清动漫图片名称和图片数据 爬取当前页: # 创建文件夹 存储图片 dirName = 'GirlsLib' if not os.path.exists(dirName):os. ...

  7. 全网最细------爬取4k高清大图

    本次案例将教大家免费爬取4k高清大图,即使你是爬虫新手,也可以食用本次文章实现你的免费下载梦,话不多说,先看效果 网站视图: 看到这些图片你是否怦然心动,跟着我一起看下去. 一.思路分析 首先最基本的 ...

  8. Python爬取LOL高清皮肤壁纸

    Python爬取LOL高清皮肤壁纸 兴趣点: 这两天复习爬虫,CSDN上看到了一个爬取LOL皮肤的博客,哎这个有意思,看了一下他写的代码,感觉难度还可以,就结合着自己的理解写了一下 参考博客: 传送门 ...

  9. python手机壁纸超清_详解Python静态网页爬取获取高清壁纸

    前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...

最新文章

  1. 云计算的认识和看法_云存储已经成为存储的未来,你的存储跟上节奏了吗?
  2. 智能外呼系统相关资料总结
  3. 检测到目标url存在内部ip地址泄露_Cendertron,动态爬虫与敏感信息泄露检测
  4. bootstrap插件(对话框)bootbox参数和自定义弹出框宽度设置
  5. 计算机财务管理复利现值的公式,财务管理公式
  6. 【渝粤教育】21秋期末考试市场营销10256k2
  7. 带你玩转kubernetes-k8s(第37篇:核心组件运行机制-Kubelete)
  8. 在vue项目中调用echarts官网百度地图实例
  9. 兼容IE,Firefox,chrome等浏览器 : 设为首页和收藏的Javascript代码
  10. profibus GSD文件详解
  11. android-微信sdk
  12. mysql大于等于between比较_MySQL范围查询优化,Between与大于等于对比及优化
  13. 删除ubuntu自带软件 及 WPS 安装(转)WPS字体已备份
  14. shardingsphere官网
  15. Microbime:微生物组学领域的标准制定
  16. 编写函数,判断year是否为闰年,若是则返回1,否则返回0
  17. 正数变负数,或者负数变正数最快的方法
  18. 【R的机器学习】决策树性能提升
  19. Blender——烘培记录
  20. 相对论通俗演义(1-10) 第四章

热门文章

  1. 花式秀恩爱,利用Python给情书加密,让女朋友甜蜜满满
  2. 2.2【2022-11-04】在virtualBox创建新的虚拟机
  3. 网页访客代码访客不增加_10种免费字体来吸引访客的注意力
  4. gzip --- 解压和压缩,gz和tgz格式的文件
  5. FLash Builder编辑器
  6. Android 安装Charles证书
  7. 什么是生成式对抗网络
  8. 从法律角度谈NFT艺术品的创作、持证和铸造权益的有效性
  9. SQL service基础(四)连接查询、自身连接查询、外连接查询和复合条件连接查询
  10. mac电脑 flv转mp4怎么转