For the Program I Am Making I Make Multiple HTTP Request to My Server.
I found that using urllib2 it was pretty slow, when I activated the
program and tested it it would hang from 2secs-5secs since I am doing
it multiple times I wanted to speed it up by using pycurl. But I got
the samething. Here is my code:
import urllib
import os.path
import cookielib
import pycurl
import StringIO
class GoToPage:
#HTTPHeaders = {'User-agent' : self.browser, 'Accept-Language:
en-us' : 'en-us', 'Accept-Encoding' : 'deflate'}
FireFox_15 = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6"
IE7_B2 = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1;
..NET CLR 1.1.4322)"
Opera_85 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en)
Opera 8.51"
IE6 = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"
Mozilla_17 = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US;
rv:1.7b) Gecko/20040404"
def __init__(self, myName):
self.browser = self.FireFox_15
self.lastPage = ""
self.cookies = ""
self.name = myName
self.wrapper = pycurl.Curl()
#self.wrapper.s etopt(pycurl.AU TOREFERER, 0)
self.wrapper.se topt(pycurl.COO KIEFILE, self.name)
#self.cookieJar = cookielib.LWPCo okieJar()
#if self.cookieJar != None:
# if os.path.isfile( self.name):
# self.cookieJar. load(self.name)
#self.opener =
urllib2.build_o pener(urllib2.H TTPCookieProces sor(self.cookie Jar))
#urllib2.instal l_opener(self.o pener)
return #end Function
def buildHeaders(se lf, browser, referer=""):
if referer != "":
buildHeaders = ['User-agent: ' + self.browser,
'Accept-Language: en-us', 'Accept-Encoding:
gzip,compress;q =0.9,deflate;q= 0', 'Referer:' + referer]
else:
buildHeaders = ['User-agent: ' + self.browser,
'Accept-Language: en-us', 'Accept-Encoding:
gzip,compress;q =0.9,deflate;q= 0']
return buildHeaders
def saveCookies(sel f, cookies):
fileHandle = open (self.name, 'w')
fileHandle.writ e (cookies)
fileHandle.clos e()
def GetPage(self, URL, referer=""):
theHeaders = self.buildHeade rs(self.browser , referer)
returnVal = StringIO.String IO()
self.wrapper.se topt(pycurl.URL , URL)
self.wrapper.se topt(pycurl.HTT PHEADER, theHeaders)
self.wrapper.se topt(pycurl.WRI TEFUNCTION, returnVal.write )
self.wrapper.pe rform()
self.wrapper.cl ose()
#self.saveCooki es(self.wrapper .getinfo(pycurl .COOKIELIST))
#self.cookieJar .save(self.name )
return returnVal.getva lue()
def PostPage(self, URL, data, referer=""):
timer = wx.StopWatch()
theHeaders = self.buildHeade rs(self.browser , referer)
print timer.Time()
timer.Start(0)
returnVal = StringIO.String IO()
self.wrapper.se topt(pycurl.URL , URL)
self.wrapper.se topt(pycurl.POS TFIELDS, data)
self.wrapper.se topt(pycurl.HTT PHEADER, theHeaders)
self.wrapper.se topt(pycurl.WRI TEFUNCTION, returnVal.write )
print str(timer.Time( )) + ' before perform'
timer.Start(0)
self.wrapper.pe rform()
print str(timer.Time( )) + ' after perform'
self.wrapper.cl ose()
#self.saveCooki es(self.wrapper .getinfo(pycurl .COOKIELIST))
#self.cookieJar .save(self.name )
return returnVal.getva lue()
The Urlib2 source is lost, and there are timer functions in there. I
call it like this
import GoToPage
newHTTP = GoToPage.GoToPa ge("name")