1.urllib.urlopen
開啟一個url的方法,返回一個檔案物件,然後可以進行類似檔案物件的操作
In [2]: file = urllib.urlopen("http://www.baidu.com")
In [3]: file.readline()
Out[3]: '<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="\xe7\x99\xbe\xe5\xba\xa6\xe6\x90\x9c\xe7\xb4\xa2" /><link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg"><link rel="dns-prefetch" href="//s1.bdstatic.com"/><link rel="dns-prefetch" href="//t1.baidu.com"/><link rel="dns-prefetch" href="//t2.baidu.com"/><link rel="dns-prefetch" href="//t3.baidu.com"/><link rel="dns-prefetch" href="//t10.baidu.com"/><link rel="dns-prefetch" href="//t11.baidu.com"/><link rel="dns-prefetch" href="//t12.baidu.com"/><link rel="dns-prefetch" href="//b1.bdstatic.com"/><title>\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93</title>\n'
In [4]: file.getcode()
Out[4]: 200
urlopen返回物件提供方法:
- read() , readline() ,readlines() , fileno() , close() :這些方法的使用方式與檔案物件完全一樣
- info():返回一個httplib.HTTPMessage物件,表示遠端伺服器返回的頭資訊
- getcode():返回Http狀態碼。如果是http請求,200請求成功完成;404網址未找到
- geturl():返回請求的url
2.urllib.urlretrieve
urlretrieve方法將url定位到的html檔案下載到你本地的硬碟中。如果不指定filename,則會存為臨時檔案。
urlretrieve()返回一個二元組(filename,mine_hdrs)
存為本地檔案:
In [12]: file = urllib.urlretrieve("http://www.baidu.com","/tmp/baidu.html")
In [13]: ls /tmp/baidu.html
/tmp/baidu.html
4.urllib.quote(url)和urllib.unquote(url),urllib.unquote(url)和urllib.unquote_plus(url)
urllib.quote(url): URL中的保留字元reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","中除了"/"之外都會被編碼
urllib.unquote(url): 還原由quote編碼的url
urllib.unquote(url): URL中的所有保留字元都會被重編碼
In [18]: urllib.quote("http://neeao.com/index.php?id=1") Out[18]: 'http%3A//neeao.com/index.php%3Fid%3D1' In [19]: urllib.unquote("http%3A//neeao.com/index.php%3Fid%3D1") Out[19]: 'http://neeao.com/index.php?id=1' In [20]: urllib.quote_plus("http://neeao.com/index.php?id=1") Out[20]: 'http%3A%2F%2Fneeao.com%2Findex.php%3Fid%3D1' In [21]: urllib.unquote_plus("http%3A%2F%2Fneeao.com%2Findex.php%3Fid%3D1") Out[21]: 'http://neeao.com/index.php?id=1'
與4的函式相反。
5.urllib.urlencode(query)
將URL中的鍵值對以連線符&劃分
這裡可以與urlopen結合以實現post方法和get方法:
GET方法:
>>> import urllib
>>> params=urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
>>> params
'eggs=2&bacon=0&spam=1'
>>> f=urllib.urlopen("http://python.org/query?%s" % params)
>>> print f.read()
POST方法:
>>> import urllib
>>> parmas = urllib.urlencode({'spam':1,'eggs':2,'bacon':0})
>>> f=urllib.urlopen("http://python.org/query",parmas)
>>> f.read()