Python3 爬虫
来源:互联网 发布:数据分析师证 编辑:程序博客网 时间:2024/04/30 15:35
引言
看到 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*/
总纲
一个抓图的过程,我们涉及以下几步:
打开网页(获得网页源码)
检索网页(获得图片URL)
拼接URL(获得图片的真实地址)
保存图片
打开网页(获取图片数据)
保存本地(保存成本地文件)
函数
对应总纲内的逻辑步骤,我们将实现4个函数
# 打开网页def open_url(url): pass# 获得 response 中的图片 urldef 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)# 拼接URLpicture_url = url_joint(temp_picture_url)# 保存图片save_url_image(picture_url, "1.jpg")
源码
# -*- coding:utf-8 -*-import urllib.requestimport 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):# 查找当前页面所有图片的URL http_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 = 0while 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().microsecond j = 0 # [3] 保存图片 for picture_url in list_picture: j += 1 local_time_file_name = str(local_time) + str(j) + ".jpg" print(local_time_file_name) save_picture(picture_url, local_time_file_name)
效果
阅读全文
1 0
- python3 爬虫
- python3爬虫
- python3 爬虫
- Python3 爬虫
- python3 多线程爬虫
- 自制 Python3爬虫
- python3.4-小爬虫
- python3基本爬虫
- Python3.4爬虫编程
- Python3.x爬虫
- Python3写简单爬虫
- python3 爬虫 urlretrieve
- python3.5.2爬虫
- [python3]糗事百科爬虫
- python3爬虫之旅
- python3爬虫学习
- python3爬虫(一)
- python3爬虫例子
- 数据库读取数据与某一字符串判断是否相等问题
- 如何使用 Mac Android Studio 做安卓真机调试 详细配置步骤
- pyalgotrade教程3--策略结果可视化与评价指标
- OpenGl(jogl)分形算法生成树
- 垃圾回收机制如何优化程序
- Python3 爬虫
- Intellij idea创建javaWeb以及Servlet简单实现
- VS 动态链接库(.dll)的加载问题
- 【笔记】ViewPager+自定义控件实现的日历控件CalenderView
- 定时任务demo
- Drools 运行时出现 java.lang.RuntimeException: wrong class format 问题解决
- linux-5-压缩打包
- ios 巧用UIButton的UIControlStateSelected属性
- 使用黄金分割比值计算斐波那契数列