python網路編程

來源:互聯網
上載者:User

標籤:python   網路編程   

一.urllib模組介紹

import urllib

先看個小例子,列印結果為一個socket串連

樣本一:

import urlliburl=r‘http://www.baidu.com‘fp=urllib.urlopen(url)print fp

>>> 

<addinfourl at 43317888 whose fp = <socket._fileobject object at 0x02947530>>

>>> 

1.基本操作

urlopen返回對象提供方法

read(),readline(),readlines(),close() 這些方法的使用方法與檔案對象完全一樣

info() 返回一個httplib.HTTPMessage對象,表示遠程伺服器返回的頭資訊

getcode() 返回HTTP狀態代碼,如果是http請求,200請求成功完成,404請求網址未找到

geturl() 返回請求的url

樣本二:

import urlliburl=r‘http://www.baidu.com‘fp=urllib.urlopen(url)#print fp.read() #列印網頁內容,相當於一個大的字串,和右鍵查看網頁原始碼效果一樣#print fp.readline() #列印一行內容,是一個元素#print fp.readlines() #全部內容以列表的形式列印出來print fp.info() #列印頭資訊print fp.getcode() #列印返回狀態代碼print fp.geturl() #列印請求的urlfp.close() #關閉串連


2.urllib.urlretrieve

臨時存放 urllib.urlretrieve(url)

本地存放 urllib.urlretrieve(url,‘檔案的絕對路徑‘)

樣本三:

import urlliburl=r‘http://www.baidu.com‘filename=urllib.urlretrieve(url)print type(filename) #元群組類型print filename #第一個參數為臨時檔案路徑,第二個參數表示伺服器的回應標頭資訊filename1=urllib.urlretrieve(url,‘baidu.html‘) #在統計目錄下產生一個baidu.html檔案

>>> 

<type ‘tuple‘>

(‘c:\\users\\zhao\\appdata\\local\\temp\\tmpzjmhu6‘, <httplib.HTTPMessage instance at 0x02BD7CD8>)

>>> 


3.urllib.cleanup

清除由於urllib.urlretrieve()所產生的緩衝


4.urllib.quot 和urllib.quote_plus

區別在於是否解碼符號/

樣本四:

import urlliburl=r‘http://www.baidu.com/[email protected]#/‘#url編碼print urllib.quote(url)print urllib.quote_plus(url)#url解碼print urllib.unquote(urllib.quote(url))print urllib.unquote_plus(urllib.quote_plus(url))

>>> 

http%3A//www.baidu.com/%21%40%23/

http%3A%2F%2Fwww.baidu.com%2F%21%40%23%2F

http://www.baidu.com/[email protected]#/

http://www.baidu.com/[email protected]#/

>>> 


5.urllib發送get和post請求

兩種方式區別如下:(粘貼自百度知道,個人覺得總結的比較全面)

①get是從伺服器上擷取資料,post是向伺服器傳送資料;

②get是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程;

③對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料;

④get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB;

⑤get安全性非常低,post安全性較高。但是執行效率卻比Post方法好。 

建議:

①get方式的安全性較Post方式要差些,包含機密資訊的話,建議用Post資料提交方式;

②在做資料查詢時,建議用Get方式;而在做資料添加、修改或刪除時,建議用Post方式。

樣本五:

假設我們本地有一段test.php代碼如下:

<?phpprint_r("get params:\n");var_dump($_GET);print_r("post params:\n");var_dump($_POST);

現在發送get和post請求:

import urlliburl=r‘http://127.0.0.1:8888/test.php‘get_params=urllib.urlencode({‘name‘:‘zhzhgo‘,‘age‘:25})post_params=urllib.urlencode({‘i‘:1,‘j‘:2})#print get_params,type(get_params) #age=25&name=zhzhgo <type ‘str‘>fp=urllib.urlopen(url+"?"+get_params,post_params)print fp.read()

>>> 

get params:

array(2) {

  ["age"]=>

  string(2) "25"

  ["name"]=>

  string(6) "zhzhgo"

}

post params:

array(2) {

  ["i"]=>

  string(1) "1"

  ["j"]=>

  string(1) "2"

}


>>> 


二.urllib2模組

urllib與urllib2需要配合使用,區別如下:

①urllib2可以接受Request類來設定url請求的headers,urllib僅可以接受url;

②urllib提供urlencode方法產生請求參數字串,urllib2沒有;

③urllib2僅有quote無quote_plus相關方法;

④urllib2無urlretrieve方法。

樣本六:

#應用urllib2接受Request類來設定url請求的headers來跳過登陸import urllib,urllib2import base64url=r‘http://127.0.0.1:8080/test.html‘#strip()預設刪除空白符,此時刪除分行符號(包括‘\n‘,‘\r‘,‘\t‘,‘ ‘)base64string=base64.encodestring(‘admin:123456‘).strip()authheader="Basic "+base64stringreq=urllib2.Request(url)req.add_header(‘Authorization‘,authheader)urllib2.urlopen(req)


三.urlparse模組

urlparse模組主要是把url拆分為6部分,並返回元組

樣本七:

import urlparseurl=r‘http://www.baidu.com/user/index.html;18?name=zhzhgo&age=25!#8888‘res=urlparse.urlparse(url)print resprint res[0]print res[1]

>>> 

ParseResult(scheme=‘http‘, netloc=‘www.baidu.com‘, path=‘/user/index.html‘, params=‘18‘, query=‘name=zhzhgo&age=25!‘, fragment=‘8888‘)

http

www.baidu.com

>>> 


本文出自 “今日的努力,明日的成功!” 部落格,請務必保留此出處http://zhzhgo.blog.51cto.com/10497096/1678954

python網路編程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.