为什么worldcat REST API在使用urllib2 python库时返回响应需要比使用浏览器时更长的时间?

时间:2015-07-25 19:30:24

标签: python rest urllib2

我正在使用worldcat python包,它使用worldcat开放的REST API并使用搜索查询和其他参数获取书籍数据。基本上它是这样做的 -

self.response = urllib2.urlopen(_query_url).read()

其中_query_url是由基本网址和一些参数组成的网址,例如搜索字符串,每页没有记录等。通过使用timeit包我发现每次调用API需要18-20秒。

但是如果我从浏览器发出请求只需3-4秒。导致python lib延迟的原因。这是正常的吗?如何在python中更快地发出API请求?

1 个答案:

答案 0 :(得分:0)

我的幸运猜测是使用自定义标题 - 它们可能有某种保护或其他。

尝试:

headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Connection": "keep-alive",
    "Content-Type": "text/html;charset=utf-8"
}

r = urllib2.Request(_query_url, None, headers)
self.response = urllib2.urlopen(r)

无论如何,我喜欢使用python 'requets',为什么不尝试一下呢。简单而稳定。除了一些SSL密钥问题,但这是另一个故事。