我正在使用worldcat python包,它使用worldcat开放的REST API并使用搜索查询和其他参数获取书籍数据。基本上它是这样做的 -
self.response = urllib2.urlopen(_query_url).read()
其中_query_url是由基本网址和一些参数组成的网址,例如搜索字符串,每页没有记录等。通过使用timeit包我发现每次调用API需要18-20秒。
但是如果我从浏览器发出请求只需3-4秒。导致python lib延迟的原因。这是正常的吗?如何在python中更快地发出API请求?
答案 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密钥问题,但这是另一个故事。