參數data默認是None,此時以GET方式發送請求;當用戶給出data參數的時候,改成POST方式發送請求。html
context參數:實現SSL加密傳輸。python
urlopen返回 一個類文件對象(fd),它提供了以下方法:
read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與文件對象徹底同樣;
info():返回一個httplib.HTTPMessage 對象,表示遠程服務器返回的頭信息(header)
getcode():返回Http狀態碼。若是是http請求,200表示請求成功完成;404表示網址未找到;
geturl():返回請求的url;web
一、打開一個網頁獲取全部內容json
''' urlopen是一個類,res至關於它的一個實例 class request(self,url,data) self.url = url self.data = data res = request('http://baidu.com','data') ''' # 其實res至關於'類urlopen'的一個實例,給它傳入'baidu.com'等參數的過程就是實例化 from urllib.request import urlopen res = urlopen("http://www.baidu.com") doc = res.read() print(doc) #另外一種書寫格式 import urllib.request res = urllib.request.urlopen('http://www.baidu.com') doc = res.read() print(doc)
二、獲取http頭部(頭中有編碼格式信息)服務器
from urllib.request import urlopen res = urlopen("http://www.baidu.com") #返回一個httplib.HTTPMessage 對象,表示遠程服務器返回的頭信息 print(res.info()) # 請求頭部 print(res.getheader('Content-Type')) # 返回請求的url地址 print(res.geturl()) # 返回Http狀態碼.若是是http請求,200=請求成功完成;404=網址未找到 print(res.getcode())
三、調用接口,並處理返回值json網絡
from urllib.request import urlopen def start_pack(real_match): for x in real_match.keys(): start_url = 'http://www.google.com/start.do?ips=%s&versionId=%s&operator=dw_%s' % (",".join(real_match[x]), x,os.getlogin()) start_html = urllib2.urlopen(start_url) start_json = json.loads(start_html.read()) task_url = 'http://www.google.com/TaskId.do?task_id=%s' % start_json['object']['taskId'] task_html = urllib2.urlopen(task_url) task_json = json.loads(task_html.read()) if start_json['code'] == 0: print "package %s start succees!" % task_json['object'][0]['package_name'] else: print "package %s start error!" % task_json['object'][0]['package_name'] start_html.close() task_html.close()
#coding=utf-8 #Python3.4.3 OS:W7-32 '''利用有道翻譯進行在線翻譯''' import urllib.request import urllib.parse import json def traslate(words): # 目標URL targetURL = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null' # 自定義表單,words表示的是用戶要翻譯的內容。這裏使用的是dict類型,也可使用元組列表(已經試過的)。 data = {} data['type'] = 'AUTO' data['i'] = words data['doctype'] = 'json' data['xmlVersion'] = '1.8' data['keyfrom'] = 'fanyi.web' data['ue'] = 'UTF-8' data['action'] = 'FY_BY_CLICKBUTTON' data['typoResult'] = 'true' # 將自定義data轉換成標準格式 data = urllib.parse.urlencode(data).encode('utf-8') # 發送用戶請求 html = urllib.request.urlopen(targetURL, data) # 讀取並解碼內容 rst = html.read().decode("utf-8") rst_dict = json.loads(rst) return rst_dict['translateResult'][0][0]['tgt'] if __name__ == "__main__": print("輸入字母q表示退出") while True: words = input("請輸入要查詢的單詞或句子:\n") if words == 'q': break result = traslate(words) print("翻譯結果是:%s"%result)