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



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

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

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

然而,如果我从浏览器发出请求,它只需要3-4秒。是什么导致了python库中的延迟。这正常吗?如何在python中使API请求更快?

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

试题:

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的"请求",为什么不试一试呢?简单稳定。除了一些ssl密钥问题之外,那是另一回事。

最新更新