我有一组50个网址...并且从每个网址,我使用urllib2检索一些数据。我正在遵循的程序(包括为每个网址设置cookie)如下:
urls = ['https://someurl', 'https://someurl', ...]
vals = []
for url in urls:
req2 = urllib2.Request(url)
req2.add_header('cookie', cookie)
response = urllib2.urlopen(req2)
data = response.read()
vals.append(json.loads(data))
所以,基本上我是从所有这些网址中检索数据并将其转储到vals列表中。 50个网址的整个过程大约需要15.5到20秒。我需要知道是否有任何其他python库我可以通过它来执行相同的操作,但是以更快的方式...如果你们可以建议使用urllib2来解决这个问题的任何其他更快的方法,那么它就是' ll也没关系。感谢。
答案 0 :(得分:3)
因此,如果15-20秒的成本很高,您可以尝试以下几种方法:
答案 1 :(得分:2)
urllib2
的速度不会成为限制因素,大部分时间它将等待TCP连接或远程服务器响应。
使用Python的multiprocessing模块非常简单,但您也可以使用线程模块。
multiprocessing.Pool可以像这样使用:
from multiprocessing import Pool
# Use the following if you prefer to use threads over processes.
# from multiprocessing.pool import ThreadPool as Pool
urls = ['https://someurl', 'https://someurl', ...]
def download_json(url):
req2 = urllib2.Request(url)
req2.add_header('cookie', cookie)
response = urllib2.urlopen(req2)
data = response.read()
return json.loads(data)
pool = Pool()
vals = pool.map(download_json, urls)
答案 2 :(得分:1)
urllib2
非常快(50个网址20秒不是这么慢)。连接资源需要一些时间。
您要做的是multithreading。