亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Python下載網頁的幾種方法

2019-11-14 17:41:54
字體:
來源:轉載
供稿:網友

get和post方式總結

get方式:以URL字串本身傳遞數據參數,在服務器端可以從'QUERY_STRING'這個變量中直接讀取,效率較高,但缺乏安全性,也無法來處理復雜的數據(只能是字符串,比如在servlet/jsp中就無法處理發揮java的比如vector之類的功能)。

post方式:就傳輸方式講參數會被打包在數據報中傳輸,從CONTENT_LENGTH這個環境變量中讀取,便于傳送較大一些的數據,同時因為不暴露數據在瀏覽器的地址欄中,安全性相對較高,但這樣的處理效率會受到影響。

get 請求表示客戶端請求一個uri,服務器返回客戶端請求的uri,post請求表示客戶端請求的時候還要提交數據,比喻提交form表單,要提交的數據會放到請求報文的body部分。服務器收到后這樣的請求后通常需要來處理這些數據。

在Form里面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點不同:
1、Get方法通過URL請求來傳遞用戶的輸入。Post方法通過另外的形式。
2、Get方式的提交你需要用Request.QueryString來取得變量的值,而Post方式提交時,你必須通過Request.Form來訪問提交的內容。

仔細研究下面的代碼。你可以運行來感受一下:

<!--兩個Form只有Method屬性不同--><FORM ACTION="getpost.asp" METHOD="get"><INPUT TYPE="text" NAME="Text" VALUE="Hello World"></INPUT><INPUT TYPE="submit" VALUE="" Method="Get"></INPUT></FORM><BR><FORM ACTION="getpost.asp" METHOD="post"><INPUT TYPE="text" NAME="Text" VALUE="Hello World"></INPUT><INPUT TYPE="submit" VALUE="" Method="Post"></INPUT></FORM><BR><BR><% If Request.QueryString("Text") <> "" Then %>通過get方法傳遞來的字符串是: "<B><%= Request.QueryString("Text") %></B>"<BR><% End If %><% If Request.Form("Text") <> "" Then %>通過Post方法傳遞來的字符串是: "<B><%= Request.Form("Text") %></B>"<BR><% End If %>

把上面的代碼保存為getpost.asp,然后運行,首先測試post方法,這時候,瀏覽器的url并沒有什么變化,返回的結果是:
通過Post方法傳遞來的字符串是: "Hello World"
然后測試用get方法提交,請注意,瀏覽器的url變成了:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的結果是:
通過get方法傳遞來的字符串是: "Hello World"
最后再通過post方法提交,瀏覽器的url還是:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的結果變成:
通過get方法傳遞來的字符串是: "Hello World"
通過Post方法傳遞來的字符串是: "Hello World"

提示:通過get方法提交數據,可能會帶來安全性的問題。比如一個登陸頁面。當通過get方法提交數據時,用戶名和密碼將出現在URL上。如果:
1、登陸頁面可以被瀏覽器緩存;2、其他人可以訪問客戶的這臺機器。
那么,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號和密碼。所以,在某些情況下,get方法會帶來嚴重的安全性問題。建議在Form中,建議使用post方法。

Python下載網頁的幾種方法

通過get的方法:

fd = urllib2.urlopen(url_link)data = fd.read()

使用get方式時,url類似如下格式:

index.jsp?id=100&op=bind

GET報問頭如下:

GET /sn/index.php?sn=123&n=asa HTTP/1.1Accept: */*Accept-Language: zh-cnhost: localhostContent-Type: application/x-www-form-urlencodedContent-Length: 12 Connection:close

get方法還可以通過如下方式實現:

def GetHtmlSource_Get(htmurl):    htmSource = ""    try:        urlx = httplib.urlsplit(htmurl)        conn = httplib.HTTPConnection(urlx.netloc)        conn.connect()    #建立連接        conn.putrequest("GET", htmurl, None)    #請求類型        conn.putheader("Content-Length", 0)        conn.putheader("Connection", "close")        conn.endheaders()                res = conn.getresponse()        htmSource = res.read()    except Exception(), err:        trackback.PRint_exec()        conn.close()      return htmSource

使用post方式時,POST方法將請求參數封裝在HTTP請求數據中,以名稱/值的形式出現,可以傳輸大量數據,可用來傳送文件。POST報文頭如下:

POST /sn/index.php HTTP/1.1Accept: */*Accept-Language: zh-cnhost: localhostContent-Type: application/x-www-form-urlencodedContent-Length: 12Connection:closesn=123&n=asa

無論是post還是get方式,他們所傳遞的數據都要進行url編碼。每對name/value由&符分開;每對來自表單的name/value由=符分開;如果用戶沒有輸入值給這個name,那么這個name還是出現,只是無值。;任何特殊的字符(就是那些不是簡單的七位ASCII,如漢字)將以百分符%用十六進制編碼。urllib庫提供了一個函數來實現url的編碼:

search=urllib.urlencode({'q''python'})#'q=python'

通過post發送請求:

import httplib,urllib; #定義需要進行發送的數據    params = urllib.urlencode({'cat_id':'6',                                'news_title':'標題-Test39875',                                'news_author':'Mobedu',                                'news_ahome':'來源',                                'tjuser':'carchanging',                                'news_keyWord':'|',                                'news_content':'測試-Content',                                'action':'newnew',                                'MM_insert':'true'});     #定義一些文件頭    headers = {"Content-Type":"application/x-www-form-urlencoded",                "Connection":"Keep-Alive",
"Referer":"http://192.168.1.212/newsadd.asp?action=newnew"}; #與網站構建一個連接 conn = httplib.HTTPConnection("192.168.1.212"); #開始進行數據提交 同時也可以使用get進行 conn.request(method="POST",url="/newsadd.asp?action=newnew",body=params,headers=headers); #返回處理后的數據response = conn.getresponse(); #判斷是否提交成功 if response.status == 302: print "發布成功!"; else: print "發布失敗"; #關閉連接 conn.close();

也可以類似于get方法來實現:

def GetHtmlSource_Post(getString):    htmSource = ""    try:        url = httplib.urlsplit("http://app.sipo.gov.cn:8080")        conn = httplib.HTTPConnection(url.netloc)        conn.connect()        conn.putrequest("POST", "/sipo/zljs/hyjs-jieguo.jsp")    #post方法        conn.putheader("Content-Length", len(getString))        conn.putheader("Content-Type", "application/x-www-form-urlencoded")        conn.putheader("Connection", " Keep-Alive")        conn.endheaders()        conn.send(getString)    #Http包的body                f = conn.getresponse()        if not f:            raise socket.error, "timed out"        htmSource = f.read()        f.close()        conn.close()    except Exception(), err:        trackback.print_exec()        conn.close()    return htmSource

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91沈先生在线观看| 国产视频精品va久久久久久| 日本成人黄色片| 亚洲天堂av在线播放| 欧美一区二区视频97| 伦伦影院午夜日韩欧美限制| 国产精品一区二区久久精品| 国产+人+亚洲| 国产精品国模在线| 中日韩美女免费视频网址在线观看| 国产精品99一区| 蜜臀久久99精品久久久无需会员| 亚洲色图偷窥自拍| 一区二区三区精品99久久| 热久久免费国产视频| 日韩大片免费观看视频播放| 欧美乱妇40p| 久久久久99精品久久久久| 欧美日韩在线影院| 日韩av综合中文字幕| 国产精品久久91| 亚洲人成在线免费观看| 成人免费直播live| 日韩经典第一页| 欧美洲成人男女午夜视频| 色无极影院亚洲| 亚洲自拍在线观看| 亚洲精品久久久久久久久久久久久| 国产精品丝袜白浆摸在线| 亚洲天堂网站在线观看视频| 欧美在线视频播放| 中文字幕亚洲一区在线观看| 久久av中文字幕| 欧美一级高清免费播放| 国内精品久久久久久久久| 国模精品一区二区三区色天香| 中文字幕日韩电影| 538国产精品视频一区二区| 亚洲综合自拍一区| 日韩在线高清视频| 成人性生交大片免费看小说| 久久久人成影片一区二区三区| 国产91精品不卡视频| 成人午夜黄色影院| www.日本久久久久com.| 亚洲精品久久视频| 国产精品亚洲一区二区三区| 国产精品88a∨| 国产精品一区二区三区在线播放| 国产精品成人一区二区三区吃奶| 国模吧一区二区| 中文字幕亚洲第一| 精品高清美女精品国产区| 91国偷自产一区二区三区的观看方式| 亚洲三级av在线| 日本精品视频在线观看| 亚洲黄色在线观看| 性色av一区二区三区免费| xxxxxxxxx欧美| 日本一本a高清免费不卡| 国产成人亚洲综合青青| 国产日韩av在线| 亚洲成人精品久久| 色综合久久中文字幕综合网小说| 日韩成人小视频| 97国产真实伦对白精彩视频8| 欧美激情小视频| 国产欧美日韩精品丝袜高跟鞋| 国产精品三级网站| 欧美激情亚洲一区| 亚洲黄色在线看| 麻豆国产va免费精品高清在线| 欧洲成人午夜免费大片| 欧美激情综合色| 久久久精品久久久| 亚洲精品自拍视频| 国内精品免费午夜毛片| 久久久91精品国产| 91精品久久久久久综合乱菊| 91久久久久久久久久| 伦理中文字幕亚洲| 米奇精品一区二区三区在线观看| 91九色国产社区在线观看| 搡老女人一区二区三区视频tv| 欧美大片网站在线观看| 久久九九亚洲综合| 久久av资源网站| 国产国语刺激对白av不卡| 久久免费视频这里只有精品| 亚洲精品中文字幕av| 国产成人av在线| 日韩免费看的电影电视剧大全| 精品在线欧美视频| 视频直播国产精品| 欧美日韩在线视频首页| 亚洲精品美女在线观看播放| 亚洲一区二区中文| 国内精品久久久久影院优| 久久久久久91香蕉国产| 国产亚洲精品日韩| 成人黄色大片在线免费观看| 91免费电影网站| www亚洲欧美| 日韩精品免费在线| 成人免费看黄网站| 性夜试看影院91社区| 两个人的视频www国产精品| 午夜精品美女自拍福到在线| 国产精品99蜜臀久久不卡二区| 欧美最猛性xxxxx(亚洲精品)| 国产精品美女主播在线观看纯欲| 亚洲社区在线观看| 欧美激情一区二区三区在线视频观看| 久久精品中文字幕电影| 国产精品九九九| 亚洲一区二区三| 亚洲www视频| 午夜精品久久久久久久99热浪潮| 欧美日韩亚洲激情| 91色精品视频在线| 欧美日韩国产va另类| 亚洲一区亚洲二区| 亚洲欧美在线免费| 欧美在线视频观看免费网站| 国产精品久久久久久婷婷天堂| 97精品一区二区视频在线观看| 国产精品久久久久久久美男| 国产精品美腿一区在线看| 精品女同一区二区三区在线播放| 黄色一区二区在线| 久久99青青精品免费观看| 午夜免费在线观看精品视频| 国产一区欧美二区三区| 精品久久久久人成| 久久综合免费视频影院| 91探花福利精品国产自产在线| 中文字幕在线国产精品| 欧美中文字幕视频在线观看| 最近2019好看的中文字幕免费| 亚洲一区亚洲二区亚洲三区| 亚洲国产日韩欧美综合久久| 日韩成人在线电影网| 亚洲影院色无极综合| 亚洲一区二区三区视频播放| 不卡av日日日| 国内精品久久影院| 92看片淫黄大片欧美看国产片| 亚洲香蕉av在线一区二区三区| 成人做爽爽免费视频| 国产精品h片在线播放| 国产性色av一区二区| 国产欧美在线看| 中文字幕亚洲综合久久筱田步美| 91欧美日韩一区| 亚洲国产精品成人一区二区| 精品福利在线视频| 自拍视频国产精品| 久久天天躁狠狠躁夜夜躁2014| 欧美性做爰毛片| 亚洲国产成人在线视频| 国产专区精品视频| 久久国产精彩视频| 国产精品18久久久久久首页狼| 久久国产精品亚洲|