python urllib2詳解及例項
urllib2是Python的一個獲取URLs(Uniform Resource Locators)的元件。他以urlopen函式的形式提供了一個非常簡單的介面,這是具有利用不同協議獲取URLs的能力,他同樣提供了一個比較複雜的介面來處理一般情況,例如:基礎驗證,cookies,代理和其他。它們通過handlers和openers的物件提供。
urllib2支援獲取不同格式的URLs(在URL的":"前定義的字串,例如:"ftp"是"ftp:python.ort/"的字首),它們利用它們相關網路協議(例如FTP,HTTP)進行獲取。這篇教程關注最廣泛的應用--HTTP。
對於簡單的應用,urlopen是非常容易使用的。但當你在開啟HTTP的URLs時遇到錯誤或異常,你將需要一些超文字傳輸協議(HTTP)的理解。
最權威的HTTP文件當然是RFC 2616(http://rfc.net/rfc2616.html)。這是一個技術文件,所以並不易於閱讀。這篇HOWTO教程的目的是展現如何使用urllib2,
並提供足夠的HTTP細節來幫助你理解。他並不是urllib2的文件說明,而是起一個輔助作用。
獲取 URLs
最簡單的使用urllib2
程式碼例項:
1 2 3 |
import urllib2
response = urllib2.urlopen( 'http://python.org/' )
html = response.read() |
urllib2的很多應用就是那麼簡單(記住,除了"http:",URL同樣可以使用"ftp:","file:"等等來替代)。但這篇文章是教授HTTP的更復雜的應用。
HTTP是基於請求和應答機制的--客戶端提出請求,服務端提供應答。urllib2用一個Request物件來對映你提出的HTTP請求,在它最簡單的使用形式中你將用你要請求的地址建立一個Request物件,通過呼叫urlopen並傳入Request物件,將返回一個相關請求response物件,這個應答物件如同一個檔案物件,所以你可以在Response中呼叫.read()。
1 2 3 4 |
import urllib2
req = urllib2.Request( 'http://www.pythontab.com' )
response = urllib2.urlopen(req)
the_page = response.read()
|
記得urllib2使用相同的介面處理所有的URL頭。例如你可以像下面那樣建立一個ftp請求。
req = urllib2.Request('ftp://example.com/')
在HTTP請求時,允許你做額外的兩件事。首先是你能夠傳送data表單資料,其次你能夠傳送額外的關於資料或傳送本身的資訊("metadata")到伺服器,此資料作為HTTP的"headers"來發送。
接下來讓我們看看這些如何傳送的吧。
Data資料
有時候你希望傳送一些資料到URL(通常URL與CGI[通用閘道器介面]指令碼,或其他WEB應用程式掛接)。在HTTP中,這個經常使用熟知的POST請求傳送。這個通常在你提交一個HTML表單時由你的瀏覽器來做。
並不是所有的POSTs都來源於表單,你能夠使用POST提交任意的資料到你自己的程式。一般的HTML表單,data需要編碼成標準形式。然後做為data引數傳到Request物件。編碼工作使用urllib的函式而非urllib2。
程式碼例項:
1 2 3 4 5 6 7 8 9 10 |
import urllib
import urllib2
url = 'http://www.pythontab.com'
values = { 'name' : 'Michael Foord' ,
'location' : 'pythontab' ,
'language' : 'Python' }
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
|
記住有時需要別的編碼(例如從HTML上傳檔案--看http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13 HTML Specification, Form Submission的詳細說明)。
如ugoni沒有傳送data引數,urllib2使用GET方式的請求。GET和POST請求的不同之處是POST請求通常有"副作用",它們會由於某種途徑改變系統狀態(例如提交成堆垃圾到你的門口)。
儘管HTTP標準說的很清楚POSTs通常會產生副作用,GET請求不會產生副作用,但沒有什麼可以阻止GET請求產生副作用,同樣POST請求也可能不產生副作用。Data同樣可以通過在Get請求的URL本身上面編碼來傳送。
程式碼例項:
1
相關推薦python urllib2詳解及例項urllib2是Python的一個獲取URLs(Uniform Resource Locators)的元件。他以urlopen函式的形式提供了一個非常簡單的介面,這是具有利用不同協議獲取URLs的能力,他同樣提供了一個比較複雜的介面來處理一般情況,例如:基礎驗證, python 中join()函式strip() 函式和 split() 函式的詳解及例項1、join()函式 Python中有join()和os.path.join()兩個函式,具體作用如下: join(): 連線字串陣列。將字串、元組、列表中的元素以指定的字元(分隔符)連線生成一個新的字串 語法: ‘sep’.join(seq) 引數說明 sep:分隔符。可以 python strip() 函式和 split() 函式的詳解及例項一直以來都分不清楚strip和split的功能,實際上strip是刪除的意思;而split則是分割的意思。因此也表示了這兩個功能是完全不一樣的,strip可以刪除字串的某些字元,而split則是根據規定的字元將字串進行分割。下面就詳細說一下這兩個功能, 1 Python strip()函式 介紹 Java執行緒池詳解及例項前言 多執行緒的非同步執行方式,雖然能夠最大限度發揮多核計算機的計算能力,但是如果不加控制,反而會對系統造成負擔。執行緒本身也要佔用記憶體空間,大量的執行緒會佔用記憶體資源並且可能會導致Out of Memory。即便沒有這樣的情況,大量的執行緒回收也會給GC帶來很大的壓力 Linux下的壓縮zip,tar命令詳解及例項Linux下的壓縮解壓縮命令詳解及例項 例項:壓縮伺服器上當前目錄的內容為xxx.zip檔案 zip -r xxx.zip ./* 解壓zip檔案到當前目錄 unzip filename.zip ============================ 另:有些伺服器 微信 小程式前端原始碼詳解及例項分析微信小程式前端原始碼邏輯和工作流 看完微信小程式的前端程式碼真的讓我熱血沸騰啊,程式碼邏輯和設計一目瞭然,沒有多餘的東西,真的是大道至簡。 廢話不多說,直接分析前端程式碼。個人觀點,難免有疏漏,僅供參考。 檔案基本結構: 先看入口app.js,app(obj)註冊一個小程式。接受一個 obje execCommand()命令詳解及例項展示execCommand方法是執行一個對當前文件,當前選擇或者給出範圍的命令。處理Html資料時常用如下格式: document.execCommand(sCommand[,互動方式, 動態引數]) , 其中:sCommand為指令引數( [jQuery]$.ajax()方法詳解及例項$.ajax()方法詳解及例項 1.url: 要求為String型別的引數,(預設為當前頁地址)傳送請求的地址。2.type:要求為String型別的引數,請求方式(post或get)預設為get。注意其他http請求方法,例如put和delete也可以使用,但僅部分瀏覽 Angular自定義指令之compile, link, controller屬性詳解及例項演示本文章主要就angularjs指令中的compile,link及controller函式的使用和區別進行詳細討論。以下是本文的結構: directive的執行原理 compile用法 link 用法 controller 用法 compile,link及co ER圖詳解及例項解析ER圖分為實體、屬性、關係三個核心部分。 實體是長方形,屬性是橢圓形,關係為菱形。 實體(entity): 即資料模型中的資料物件(即資料表),用長方體來表示,每個實體都有自己的實體成員(entity member)或者說實體物件(entity instance),例如 Linux下的壓縮zip,解壓縮unzip命令詳解及例項Linux下的壓縮解壓縮命令詳解及例項 例項:壓縮伺服器上當前目錄的內容為xxx.zip檔案 zip -r xxx.zip ./* 解壓zip檔案到當前目錄 unzip filename.zip ============================ 另:有些伺服器沒有安裝zip包執行不了zip 跟我學Redis(17)—Redis事務詳解及例項前面有篇文章,簡單介紹了Redis事務。 Redis事務主要命令包括 MULTI、EXEC、WATCH 命令。本篇文章將詳細介紹事務以及Redis事務例項應用! 一、事務、悲觀鎖、樂觀鎖概述 簡單的 ftp客戶端命令詳解及例項經常使用ftp進行檔案上下傳的使用者使用的工具大部分都是flashxp或者java開源實現的FileZilla Client(當然也有java開源的FileZilla Server )客戶端軟體實現,可是大部分人並不知道windiows和linux一般都帶的 ndk開發中的Android.mk檔案與Application.mk詳解及例項Android.mk檔案的作用: An Android.mk file is written to describe your sources to the build system. 中文意思是:寫一個Android.mk檔案是為了向生成系統描述你的原始碼。 Java 執行緒池詳解及例項程式碼這篇文章主要介紹了Java 執行緒池的相關資料,並符例項程式碼,幫助大家學習參考,需要的朋友可以參考下執行緒池的技術背景在面向物件程式設計中,建立和銷燬物件是很費時間的,因為建立一個物件要獲取記憶體資源或者其它更多資源。在Java中更是如此,虛擬機器將試圖跟蹤每一個物件,以便 Angular自定義指令之scope屬性詳解及例項演示本文將對AngularJS自定義指令詳解中的scope屬性配合例項演示,進行深度講解: scope屬性值可以是Boolean型別, 也可以是 Object型別, Boolean型別: scope值為false時,可以理解成指令內部並沒有一個新的sco CvMat的用法詳解及例項目錄 CvMat是OpenCV比較基礎的函式。初學者應該掌握並熟練應用。但是我認為計算機專業學習的方法是,不斷的總結並且提煉,同時還要做大量的實踐,如編碼,才能記憶深刻,體會深刻,從而引導自己想更高層次邁進。 1.初始化矩陣: 方式一、逐點賦值式: popen和pclose詳解及例項popen函式是標準c提供的一個管道建立函式,其內部操作主 要是建立一個管道,呼叫fork建立子程序,關閉不需用的檔案描述符,呼叫exec函式族執行popen的第一個引數。然後等到關閉。 也就是說我們可以傳遞一個命令(ls -l......)或一個可執行 Python第二天: 變量詳解及變量賦值number ont 時間 目錄 命令 code toc 編號 運用 目錄 [toc] 此文章針對剛學Python的小白,若覺得對變量有很好的掌握,可以觀看其他的文章在這裏, 我說一下我對變量的簡單總結: 變量是為了存儲運算程序中的一些中間結果, 為了方便日後調用 什麽 python爬蟲學習筆記二:Requests庫詳解及HTTP協議Requests庫的安裝:https://mp.csdn.net/postedit/83715574 r=requests.get(url,params=None,**kwargs) 這個r是Response物件 url :擬獲取頁面的url連結 params:url中的額外引數 |