Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
('testUrllib()', 19.59859853472629)
('testUrllib2()', 22.586007300934412)
('testHttplib()', 16.670537860489773)
('testSocket()', 1.5129479809538537)
('testRequests()', 9.380710576092)
('testPycurl()', 17.76420596649031)
curlHandler.setopt(pycurl.ENCODING, 'gzip')
class GZipProcessor(urllib2.BaseHandler):
"""A handler to add gzip capabilities to urllib2 requests
http://techknack.net/python-urllib2-handlers/
"""
def http_request(self, req):
req.add_header("Accept-Encoding", "gzip")
return req
https_request = http_request
def http_response(self, req, resp):
if resp.headers.get("content-encoding") == "gzip":
gz = GzipFile(
fileobj=StringIO(resp.read()),
mode="r"
)
old_resp = resp
resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url,
old_resp.code)
resp.msg = old_resp.msg
return resp
https_response = http_response
opener = urllib2.build_opener()
opener.add_handler(GZipProcessor())
opener.open("http://example.com/")
Здесь явно используется кэширование. Без кэширования (h = httplib2.Http()) метод работает в 6-9 раза медленнее предыдущих аналогов.
Метод 4, с (без кэширования, с)
0.089 (7.625)
from urllib.request import urlopen
resource = urlopen(img)
out = open("...\img.jpg", 'wb')
out.write(resource.read())
out.close()
from urllib.request import urlretrieve
urlretrieve(img, "...\img.jpg")
Четыре метода загрузки изображений с веб-сайта с помощью Python