Python urllib 庫提供了一個從指定的 URL 地址獲取網頁數據,然后對其進行分析處理,獲取想要的數據。
一、urllib模塊urlopen()函數:
urlopen(url, data=None, proxies=None)
創建一個表示遠程url的類文件對象,然后像本地文件一樣操作這個類文件對象來獲取遠程數據。
參數url表示遠程數據的路徑,一般是網址;
參數data表示以post方式提交到url的數據(玩過web的人應該知道提交數據的兩種方式:post與get);
參數proxies用於設置代理。
urlopen返回 一個類文件對象(fd),它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :這些方法的使用方式與文件對象完全一樣;
info():返回一個httplib.HTTPMessage 對象,表示遠程服務器返回的頭信息(header)
getcode():返回Http狀態碼。如果是http請求,200表示請求成功完成;404表示網址未找到;
geturl():返回請求的url;
二、實例
1、打開一個網頁獲取所有內容
from urllib2 import urlopen doc = urlopen("http://www.baidu.com").read() print doc
2、獲取http頭部(頭中有編碼格式信息)
from urllib2 import urlopen doc = urlopen("http://www.baidu.com") print doc.info() print doc.info().getheader('Content-Type')
3、調用接口,並處理返回值json
import urllib2
1 def start_pack(real_match): 2 3 for x in real_match.keys(): 4 start_url = 'http://www.google.com/start.do?ips=%s&versionId=%s&operator=dw_%s' % (",".join(real_match[x]), x,os.getlogin()) 5 start_html = urllib2.urlopen(start_url) 6 start_json = json.loads(start_html.read()) 7 8 task_url = 'http://www.google.com/TaskId.do?task_id=%s' % start_json['object']['taskId'] 9 task_html = urllib2.urlopen(task_url) 10 task_json = json.loads(task_html.read()) 11 12 if start_json['code'] == 0: 13 print "package %s start succees!" % task_json['object'][0]['package_name'] 14 else: 15 print "package %s start error!" % task_json['object'][0]['package_name'] 16 17 start_html.close() 18 task_html.close()