(参考资料:现代魔法学院 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模块学习(一)相关推荐

  1. python urllib2模块安装,Python urllib和urllib2模块学习(二)

    一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...

  2. python2 urllib模块_python urllib与urllib2模块用法教程

    python urllib与urllib2模块用法 urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能. urllib提供urlencode方法用来GET查询字符串的产生 ...

  3. python 的日志logging模块学习

    2019独角兽企业重金招聘Python工程师标准>>> python 的日志logging模块学习 分类: python 2011-08-02 23:51 8338人阅读 评论(0) ...

  4. Python urllib、urllib2、urllib3

    相关链接: <Python urllib.urllib2.urllib3用法及区别> <urllib2库.官方文档翻译> <urllib3官方文档> <url ...

  5. Python学习之urlib模块和urllib2模块学习

    2019独角兽企业重金招聘Python工程师标准>>> 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://john ...

  6. Python urllib、urllib2、urllib3用法及区别

    简介1 在可供使用的网络库中,urllib和urllib2可能是投入产出比最高的两个,是Python中操作url的官方标准库.它们让你能够通过网络访问文件,就像这些文件位于你的计算机中一样.只需一个简 ...

  7. python中的glob 模块学习文件路径查找

    glob glob.glob(pathname), 返回所有匹配的文件路径列表.它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径. import glob ...

  8. python使用教程cmd啥意思-Python 中的cmd模块学习

    Python中的cmd模块类型提供了一个创建命令行解析器的框架.简单的来说,可以继承Cmd来创建命令行界面,然后对所有想处理的命令command执行do_command方法.默认情况下,它使用read ...

  9. 使用python制作爬虫_使用Python的urllib和urllib2模块制作爬虫的实例教程

    urllib学习python完基础,有些迷茫.眼睛一闭,一种空白的窒息源源不断而来.还是缺少练习,遂拿爬虫来练练手.学习完斯巴达python爬虫课程后,将心得整理如下,供后续翻看.整篇笔记主要分以下几 ...

最新文章

  1. boost::mpl::plus相关的测试程序
  2. SpringBoot------Servlet3.0的注解自定义原生Listener监听器
  3. 天龙八部网单服务器技能修改,天龙八部3门派技能修改介绍
  4. ActiveMQ 即时通讯服务 入門指南及淺析
  5. 1000道Python题库系列分享一(17道)
  6. 面试过程中,竟然遇到PUA,我不得不服这种“潜规则”~
  7. ElementUI:tree鼠标浮动在某个节点背景色以及点击背景色修改
  8. 阿里旺旺新老版本共存
  9. 海康摄像头使用网线连接电脑后无法访问摄像头ip
  10. Navicat安装配置
  11. 学校机房环境监控系统解决方案!
  12. 计算机考试有python吗_计算机二级考试有python吗
  13. 鸟哥Linux私房菜 第五章 文件权限与目录配置
  14. ENVI5.1 进行监督分类流程化工具时(classification workflow)界面显示不全的问题解决办法
  15. 产品经理干久了,有哪些后遗症?
  16. Elasticsearch - Indices stats 获取索引级别的统计信息之三 【indexing】索引操作信息
  17. 11月更新!一口气上线20+新功能,3D架构拓扑图更具趣味性
  18. UWB高精度定位落地:中大型区域动态人员精细网格化管理
  19. Convert() 转换时 报错:输入字符串的格式不正确
  20. PowerDesigner16.5如何导出表到word的方法

热门文章

  1. Pygame Rect区域位置(图解)
  2. 【python教程入门学习】利用Python绘制关系网络图
  3. 简述Linux和Windows下Python搭建步骤
  4. C语言开发单片机如何避免全局变量过多混乱
  5. django外调用url_Django学习(url配置及参数获取)
  6. 关于学习Python的一点学习总结(21->并行迭代)
  7. 关于ValueError: Unknown projection ‘3d‘报错的解决方法
  8. HDU1874(Dijstra算法)
  9. 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
  10. 华为存储iscsi配置_网络+存储+虚拟化:三大要素构建新网络