Python urllib和urllib2模块学习

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 表示服务器的响应头。
时间: 2024-11-05 18:55:15

Python urllib和urllib2模块学习的相关文章

Python urllib和urllib2模块学习(二)

一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 url 进行编码.解码等等. 辅助方法: 1. urllib.quote(string[,safe]) : 对字符串进行编码,参数safe指定了不需要编码的字符: urllib.unquote(string):  对字符串进行解码: 2. urllib.urlencode(query[,doseq]):

Python urllib和urllib2模块学习(三)

build_opener()详解: 1.urllib2.urlopen()函数不支持验证.cookie或者其它HTTP高级功能,要支持这些功能,必须使用build_opener()函数创建自定这句话的Opener对象. 代码如下: build_Opener([handler1[handle2,...]]) 参数handler是Handler实例,常用的有HTTPBasicAuthHandler.HTTPCookieProcessor.ProxyHandler等. build_opener ()返

[python]-urllib和urllib2模块

转自:http://zeping.blog.51cto.com/6140112/1143722 urllib 和urllib2都是接受URL请求的相关模块,但是提供了不同的功能. urllib提供urlencode方法用来GET查询字符串的产生,而urllib2没有. urllib: 网页基础: import urllib #打开51cto cto = urllib.urlopen('http://www.51cto.com') #打开本地文件:cto = urllib.urlopen(url=

python urllib、urllib2模块讲解

1.urllib模块 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google import urllib f = urllib.urlopen('http://www.google.com.hk/') firstLine = f.readline() #读取html页面的第一行 urlopen返回对象提供方法: -         read() , readline() ,re

Python的urllib和urllib2模块

Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: urllib2可以接受一个Request对象,并以此可以来设置一个URL的headers,但是urllib只接收一个URL.这意味着,你不能伪装你的用户代理字符串等.urllib模块可以提供进行urlencode的方法,该方法用于GET查询字符串的生成,urllib2的不具有这样的功能.这就是urllib与urllib2经常在一起使用的原因. 常用的方法 urllib2.u

urllib与urllib2的学习总结

先啰嗦一句,我使用的版本是python2.7,没有使用3.X的原因是我觉 得2.7的扩展比较多,且较之前的版本变化不大,使用顺手.3.X简直就是革命性的变化,用的蹩手.3.x的版本urllib与urllib2已经合并为 一个urllib库,学着比较清晰些,2.7的版本呢urllib与urllib2各有各的作用,下面我把自己学习官方文档和其他资料的总结写下,方便以 后使用. urllib与urllib2并不是可以代替的,只能说2是一个补充吧.先来看看他们俩的区别,有一篇文章把urllib与urll

Python:urllib和urllib2的区别(转)

原文链接:http://www.cnblogs.com/yuxc/ 作为一个Python菜鸟,之前一直懵懂于urllib和urllib2,以为2是1的升级版.今天看到老外写的一篇<Python: difference between urllib and urllib2>才明白其中的区别. You might be intrigued by the existence of two separate URL modules in Python -urllib and urllib2. Even

【Python】Python的urllib、urllib2模块调用“百度翻译”API进行批量自动翻译

1.问题描述 在文本数据处理时,经常回出现文本中各种语言的混杂情况,包括:英文.日语.俄语.法语等,需要将不同语种的语言批量翻译成中文进行处理.可以通过Python直接调用百度提供的翻译API进行批量的翻译. 百度翻译API详细文档见:百度翻译API文档 2.问题解决 开发环境:Linux 将文本中的中文和非中文进行分离,对非中文的部分进行翻译. Python的代码如下:translate.py #!/usr/bin/python #-*- coding:utf-8 -*- import sys

python urllib 和 urllib2

urllib 和 urllib2 都是接受URL请求的相关模块,但是提供了不同的功能.两个最显著的不同如下: urllib 仅可以接受URL,不能创建 设置了headers 的Request 类实例: 但是 urllib 提供 urlencode 方法用来GET查询字符串的产生,而 urllib2 则没有.(这是 urllib 和 urllib2 经常一起使用的主要原因) 编码工作使用urllib的urlencode()函数,帮我们将key:value这样的键值对转换成"key=value&qu