urllib 詳解

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 GMT
    Content-Type: text/html; charset=utf-8
    Connection: Close
    Vary: Accept-Encoding
    Set-Cookie: BAIDUID=407CA5585070D99F114F474BDF25B1DD:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: BIDUPSID=407CA5585070D99F114F474BDF25B1DD; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: PSTM=1451872790; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-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.com
    P3P: CP=" OTI DSP COR IVA OUR IND COM "
    Cache-Control: private
    Cxy_all: baidu+c5bd5b617505e343d70a0efa4299eae3
    Expires: Mon, 04 Jan 2016 01:58:54 GMT
    X-Powered-By: HPHP
    Server: BWS/1.1
    X-UA-Compatible: IE=Edge,chrome=1
    BDPAGETYPE: 1
    BDQID: 0xfb6bb786001d1192
    BDUSERID: 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()函數使用.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章