Pycurl的安裝與使用_第1頁(yè)
Pycurl的安裝與使用_第2頁(yè)
Pycurl的安裝與使用_第3頁(yè)
Pycurl的安裝與使用_第4頁(yè)
Pycurl的安裝與使用_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Pycurl的簡(jiǎn)單使用和比較荒唐的退場(chǎng)幾次后,我終于放棄了一點(diǎn),開始嘗試其他模塊。我看到很多人推薦wget和pylol。Wget是獨(dú)立軟件,因此沒有考慮。Pycoll的強(qiáng)大curl性能(基于c語(yǔ)言開發(fā))廣泛反映了高效、可靠和強(qiáng)大的功能。所以決定嘗試它。簡(jiǎn)單地(見下文)比較,pycur消耗的時(shí)間比urllib2少得多。這在爬行動(dòng)物身上累積后給人留下了很深的印象。PycURL是一個(gè)非??焖?引用多并發(fā))、豐富、完整的功能,但有點(diǎn)復(fù)雜的界面。如果需要簡(jiǎn)單或純粹的python模塊,可以參閱urllib2或urlgrabber。通過http:/PycURL./了解有關(guān)pyu

2、rl的文檔信息和其他信息。PycURL是libcurl的包,因此還需要對(duì)c的libcurl的引用。安裝Pycurl獲取和安裝Libcurl非常簡(jiǎn)單,具體取決于運(yùn)行的Linux版本,如果使用Ubuntu,則只需安裝ap-get即可。$ sudo apt-getlibcurl3$ sudo apt-get python-pytcurl要檢查以下系統(tǒng)上的pycurl版本信息,可以執(zhí)行以下操作:1 import pycurl2 pycurl.version3 lib curl/7 . 19 . 7 gnutls/2 . 8 . 5 zlib/1 . 2 . 3 . 3 lib IDN/1.15如上所示

3、,我系統(tǒng)上的libcurl是7.19.7的最新版本。使用Pycurl:Pycurl。Curl() -Curlobject此函數(shù)是對(duì)應(yīng)于libCURL的CURL處理器的Curl對(duì)象。自動(dòng)設(shè)置curl對(duì)象CURLOPT_VERBOSE為0,curl opt _ no progress為1,默認(rèn)CURLOPT_USERAGENT和設(shè)置CURLOPT_ERRORBUFFER指向個(gè)人錯(cuò)誤緩沖區(qū)。py coll . curlsion()-curlmultiobject此函數(shù)創(chuàng)建與libcurl的CURLM處理器相對(duì)應(yīng)的新CurlMulti對(duì)象。py coll . curlshareobject()-cur

4、lshareobject此函數(shù)是對(duì)應(yīng)于libCurl的CURLSH處理器的新CurlShare對(duì)象。創(chuàng)建curlchare對(duì),然后從curl對(duì)象傳遞SHARE選項(xiàng)參數(shù)。繼續(xù)其中:Curl對(duì)象具有以下方法:Close()-None對(duì)應(yīng)于libCurl的curl_easy_cleanup方法。不再引用curl對(duì)象時(shí),將自動(dòng)調(diào)用此方法,但也可以直接調(diào)用此方法。Perform()-None對(duì)應(yīng)于libcurl的curl_easy_perform方法。Setopt(option,value)-None對(duì)應(yīng)于libcurl的curl_easy_setopt方法,option是使用libcurl的CURLO

5、PT_*常量指定的。但是,CURLOPT_前綴現(xiàn)在取決于option。value的數(shù)據(jù)類型可以是字符串、整數(shù)、長(zhǎng)整數(shù)、文件對(duì)象、列表或函數(shù)。Example usage:拿來咸菜C=pycurl。Curl()C.setopt (pycoll.url, /)C.setopt (pyurl.httpheader, accept 3360 )Import StringIOB=StringIO。StringIO()C.setopt (pyurl.write function,b.write)C.setopt (pycoll.follow location,1)C.

6、setopt (pyurl.maxredirs,5)C.perform()Print b.getvalue()Getinfo(option)-Result對(duì)應(yīng)于libcurl的curl_easy_getinfo方法,option是使用libcurl的CURLOPT_*常量指定的。但是,CURLOPT_前綴現(xiàn)在已刪除。Result包含指定的整數(shù)、浮點(diǎn)數(shù)或字符串,因?yàn)樵谡{(diào)用或完成指定的option.getinfo方法之前,不能調(diào)用該方法。Example usage:拿來咸菜C=pycurl。Curl()C.setopt (pyurl.url, )C.setopt (pyc

7、oll.follow location,1)C.perform()Printc.getinfo (pyurl.http _ code),c.getinfo (pyurl.effective _ URL).-200 /Errstr()-String從此處理器返回內(nèi)部libcurl錯(cuò)誤緩沖區(qū)的字符串表示形式。其他的以后再翻譯。Urilib2 vspyl的簡(jiǎn)單比較導(dǎo)入U(xiǎn)rl布局,然后使用urllib2和pycurl導(dǎo)入頁(yè)面內(nèi)容,并計(jì)算每個(gè)頁(yè)面所用的時(shí)間。最后比較平均時(shí)間。我跑來這里,相關(guān)資料如下。pycurl可能比urllib2節(jié)省20%以上的時(shí)間。1: u

8、rllib2平均時(shí)間:0。pycurl平均時(shí)間:0。2330urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。3: urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。4: urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。5: urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。6: urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。7: urllib2平均時(shí)間:0。pycurl平均時(shí)間:0。相關(guān)代碼如下:1: #coding=utf-82: import OS3: import datetime as dt4: import time5: import urllib26:

9、import pycurl7: import cstring io as stringio8:比較Pycurl和urllib2效率的9:測(cè)試程序103360橘子2010.12.05一只11:12:13: deffetch _ URL(menu URL= ):從14: URL導(dǎo)入目錄頁(yè)內(nèi)容。返回頁(yè)面內(nèi)容字符串15:使用urllib2實(shí)現(xiàn)16:17: the_page= 18: try:19: #下載頁(yè)面2033 360 req=urllib 2 . request(menu URL)213360 req . add _ header(user-agent,Mozilla/5.0(windows;

10、u;Windows NT 6.1zh-CN;RV :1 . 9 . 2 . 12)gecko/Firefox/3 . 6 . 12)22: #設(shè)置超時(shí)2: response=urllib 2 . urlopen(req,timeout=30)24: the_page=response.read()253360 exception,e2:263360 crawler log( fetch _ URL(): error 43360% s;menuurl :% s“%”(e,menurl)27: return the_page28:29: deffetch _ URL 2(menu URL= ):從

11、303360 URL導(dǎo)入目錄頁(yè)內(nèi)容。返回頁(yè)面內(nèi)容字符串313360使用pycurl實(shí)現(xiàn)32:33: the_page= 34: try:35: #下載頁(yè)面36: req=pycurl。Curl()37:req.setopt (pyurl.url,menu URL)38: #設(shè)置超時(shí)39: req . setopt(pyurl . time out,30)403360fp=stringio.stringio()41: req . setopt(pyurl . write function,fp.write)423360 req . setopt(pyurl . user agent,Mozill

12、a/5.0(windows;u;Windows NT 6.1zh-CN;RV :1 . 9 . 2 . 12)gecko/Firefox/3 . 6 . 12)43: req.perform()44: the_page=fp.getvalue()45: exception,e:46: crawler log( fetch _ URL(): error 5553360% s;menuurl :% s“%”(e,menurl)47: return the_page48:49: def爬行者程式(doc):保存503360日志51:52: logfile=u 。/crawler _ error.log53: try:54: out=open(日志文件,“a”)55: out.write(位于dt.datetime.now () doc中的“time :% s % s n”%)56: exception,e:57: print“error :% s”% e58: finally:59: out.close()60:61: def url_vs_curl():62: print start:,dt.datetime.now()63: import timeit64: link=http:/www . B/,,3358

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論