urllib 详解

来源:互联网 发布:淘宝客服热线 编辑:程序博客网 时间:2024/06/09 17:16

urllib是一个是python的一个高级web模块,它可以帮助我们快速的获取网络上的数据
今天对urllib库的用法做一个简单的总结.

  1. urllib.urlopen(url[,data[,proxies[,context]]]) -> a file like object
    本函数的作用是接受一个地址参数,打开该地址下的文件并返回一个类文件对象.
    url参数一般是网址,也可以是本地文件(以file:标记开始),如果获取失败,引发IOError 异常,若成功,返回类文件对象
    对于该对象可以使用read(), readline(), readlines(), fileno(), close(), info(), getcode() 和geturl() 方法访问.
    data参数是POST方式是需要传递给web服务器的数据,必须是标准的网络数据格式,该格式可以使用urllib.urlencode() 方法生成.
    proxies参数是代理服务器的设置
    context参数是python2.79新增的,实在https 传输协议的时候需要的证书内容,参数类型是ssl.SSLcontext类对象.
    下边用实例说明

    >>>url = 'http://www.baidu.com'>>> page = urllib.urlopen(url)>>>page.read()[0:100]'<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charse'>>>print page.info()Date: Mon, 04 Jan 2016 01:59:50 GMTContent-Type: text/html; charset=utf-8Connection: CloseVary: Accept-EncodingSet-Cookie: BAIDUID=407CA5585070D99F114F474BDF25B1DD:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: BIDUPSID=407CA5585070D99F114F474BDF25B1DD; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: PSTM=1451872790; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.comSet-Cookie: BDSVRTM=0; path=/Set-Cookie: BD_HOME=0; path=/Set-Cookie: H_PS_PSSID=17746_1423_18726_18240_18534_17946_18731_18546_17000_17072_15888_12031; path=/; domain=.baidu.comP3P: CP=" OTI DSP COR IVA OUR IND COM "Cache-Control: privateCxy_all: baidu+c5bd5b617505e343d70a0efa4299eae3Expires: Mon, 04 Jan 2016 01:58:54 GMTX-Powered-By: HPHPServer: BWS/1.1X-UA-Compatible: IE=Edge,chrome=1BDPAGETYPE: 1BDQID: 0xfb6bb786001d1192BDUSERID: 0
  2. urllib.urlretrieve(url[,filename[,reporthook[,data]]]) -> (filename, header)
    该函数可以将整个网页内容拷贝到本地文件中,若成功,返回包含文件名和文件头信息元组.若filename参数缺省,则根据系统不同在不同位置生成临时文件.

    >>>urllib.urlretrieve(url)('/tmp/tmp6Wml60', <httplib.HTTPMessage instance at 0x7f57d005b5f0>)

    (我是ubuntu14.04, 生成的临时文件在/tmp目录下,打开该文件就能看到百度主页的源码)

  3. urllib.urlencode(query[,doseq]) -> percent-encoded string
    将数据转换成预编码格式,该格式数据可以传递给urlopen()函数使用.

0 0