Python urllib和urllib2模块学习(一)
(参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803)
Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib和urllib2 这个 HTTP 客户端库。这里总结了一些 urllib和urlib2 库的使用细节。
Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据。
一、urllib常用函数介绍:
1. urlopen()函数:即创建一个类文件对象为指定的 url 来读取。
可以使用help(urllib.urlopen)查看函数说明。
urlopen(url, data=None, proxies=None)
Create a file-like object for the specified URL to read from.
urlopen返回一个类文件对象,它提供了如下方法:
read(),readline,readlines,fileno和close: 这些方法的使用和文件对象一样;
info(): 返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息。
getcode():返回Http状态码,如果是http请求,200表示请求成功完成,404表示网址没有找到。
getutl: 返回请求的url地址。
示例:
>>>import urllib
>>>baidu = urllib.urlopen('http://www.baidu.com')
>>>baidu.read()
>>> print baidu.info()
输出:
Date: Fri, 24 Apr 2015 05:41:40 GMT
Server: Apache
Cache-Control: max-age=86400
Expires: Sat, 25 Apr 2015 05:41:40 GMT
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-4b4c7d90"
Accept-Ranges: bytes
Content-Length: 81
Connection: Close
Content-Type: text/html
>>>for line in baidu: #等价于read(),就像在操作本地文件,将网页数据打印出来。
print line,
baidu.close()
补充:
- urllib.open的参数有特别要示,要遵循一些网络协议,比如http,ftp,也就是说在网址的开头必须要有http://或ftp://如:
urllib.urlopen('http://www.baidu.com')
urllib.urlopen('ftp://192.168.1.200')
- 若要使用本地文件,就需要在前面加filt关键字,如:
urllib.urlopen('file:nowangic.py')
urllib.urlopen('file:F:\test\helloworld.py')
2. urlretrieve()函数:直接将远程数据下载到本地。
可以使用help(urllib.urlretvieve)查看函数说明
Help on function urlretrieve in module urllib:
urlretrieve(url, filename=None, reporthook=None, data=None)
- 参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
- 参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
- 参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。
示例1:
>>>urllib.urlretrieve('http://www.soso.com','c://soso.html')
('c://soso.html', <httplib.HTTPMessage instance at 0x0000000005187A48>)
示例2:下面是urlretrieve()下载文件实例,可以显示下载进度。
#coding:utf-8
import urllib
def cbk(a,b,c):
"""
@a: 已经下载的数据块
@b: 数据块的大小
@c: 远程文件的大小
"""
per = 100.0 *a*b/c
if per >100:
per = 100
print '#%d%%'% per
url = 'http://www.soso.com'
local = 'c://test//soso.html'
urllib.urlretrieve(url,local,cbk)
示例3:爬虫练习:
#-*-coding:utf-8-*-
""" 爬虫练习
Date:06-15-2015
"""
import urllib
import re
#获取指定url网页内容
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html
#利用正则表达式将指定的图片下载
def getImg(html):
reg = 'src="(.*?\.jpg)" pic_ext'
regimg = re.compile(reg)
imglist = re.findall(regimg,html)
x = 0
for img in imglist:
urllib.urlretrieve(img,'%s.jpg' % x)
x+=1
Html = getHtml('http://tieba.baidu.com/p/3825178610')
Img = getImg(Html)
转载于:https://www.cnblogs.com/yu2000/p/4453252.html
Python urllib和urllib2模块学习(一)相关推荐
- python urllib2模块安装,Python urllib和urllib2模块学习(二)
一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...
- python2 urllib模块_python urllib与urllib2模块用法教程
python urllib与urllib2模块用法 urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能. urllib提供urlencode方法用来GET查询字符串的产生 ...
- python 的日志logging模块学习
2019独角兽企业重金招聘Python工程师标准>>> python 的日志logging模块学习 分类: python 2011-08-02 23:51 8338人阅读 评论(0) ...
- Python urllib、urllib2、urllib3
相关链接: <Python urllib.urllib2.urllib3用法及区别> <urllib2库.官方文档翻译> <urllib3官方文档> <url ...
- Python学习之urlib模块和urllib2模块学习
2019独角兽企业重金招聘Python工程师标准>>> 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://john ...
- Python urllib、urllib2、urllib3用法及区别
简介1 在可供使用的网络库中,urllib和urllib2可能是投入产出比最高的两个,是Python中操作url的官方标准库.它们让你能够通过网络访问文件,就像这些文件位于你的计算机中一样.只需一个简 ...
- python中的glob 模块学习文件路径查找
glob glob.glob(pathname), 返回所有匹配的文件路径列表.它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径. import glob ...
- python使用教程cmd啥意思-Python 中的cmd模块学习
Python中的cmd模块类型提供了一个创建命令行解析器的框架.简单的来说,可以继承Cmd来创建命令行界面,然后对所有想处理的命令command执行do_command方法.默认情况下,它使用read ...
- 使用python制作爬虫_使用Python的urllib和urllib2模块制作爬虫的实例教程
urllib学习python完基础,有些迷茫.眼睛一闭,一种空白的窒息源源不断而来.还是缺少练习,遂拿爬虫来练练手.学习完斯巴达python爬虫课程后,将心得整理如下,供后续翻看.整篇笔记主要分以下几 ...
最新文章
- boost::mpl::plus相关的测试程序
- SpringBoot------Servlet3.0的注解自定义原生Listener监听器
- 天龙八部网单服务器技能修改,天龙八部3门派技能修改介绍
- ActiveMQ 即时通讯服务 入門指南及淺析
- 1000道Python题库系列分享一(17道)
- 面试过程中,竟然遇到PUA,我不得不服这种“潜规则”~
- ElementUI:tree鼠标浮动在某个节点背景色以及点击背景色修改
- 阿里旺旺新老版本共存
- 海康摄像头使用网线连接电脑后无法访问摄像头ip
- Navicat安装配置
- 学校机房环境监控系统解决方案!
- 计算机考试有python吗_计算机二级考试有python吗
- 鸟哥Linux私房菜 第五章 文件权限与目录配置
- ENVI5.1 进行监督分类流程化工具时(classification workflow)界面显示不全的问题解决办法
- 产品经理干久了,有哪些后遗症?
- Elasticsearch - Indices stats 获取索引级别的统计信息之三 【indexing】索引操作信息
- 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性
- UWB高精度定位落地:中大型区域动态人员精细网格化管理
- Convert() 转换时 报错:输入字符串的格式不正确
- PowerDesigner16.5如何导出表到word的方法
热门文章
- Pygame Rect区域位置(图解)
- 【python教程入门学习】利用Python绘制关系网络图
- 简述Linux和Windows下Python搭建步骤
- C语言开发单片机如何避免全局变量过多混乱
- django外调用url_Django学习(url配置及参数获取)
- 关于学习Python的一点学习总结(21->并行迭代)
- 关于ValueError: Unknown projection ‘3d‘报错的解决方法
- HDU1874(Dijstra算法)
- 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
- 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络