我正在尝试调用import.io API。该调用必须具有以下结构:
' https://extraction.import.io/query/extractor/ {{crawler_id}}?_ apikey = xxx&url = http://www.example.co.uk/items.php?sortby=Price_LH&per_page=96&size=1%2C12&page = 35 '
您可以在该调用中看到,还必须包含参数“ url”:
http://www.example.co.uk/items.php?sortby=Price_LH&per_page=96&size=1%2C12&page=35
碰巧这个辅助URL也需要参数。但是,如果像上面的示例那样将其作为普通字符串传递,则当我获得API响应时,API响应仅包括第一个参数之前的部分:
这是不正确的,似乎是使用不完整的URL而不是我传入的URL进行呼叫。
我正在使用Python,并要求以以下方式进行调用:
import requests
import json
row_dict = {'url': u'http://www.example.co.uk/items.php?sortby=Price_LH&per_page=96&size=1%2C12&page=35', 'crawler_id': u'zzz'}
url_call = 'https://extraction.import.io/query/extractor/{0}?_apikey={1}&url={2}'.format(row_dict['crawler_id'], auth_key, row_dict['url'])
r = requests.get(url_call)
rr = json.loads(r.content)
当我打印重新使用时:
"url" : "http://www.example.co.uk/items.php?sortby=Price_LH",
但是当我打印r.url时:
https://extraction.import.io/query/extractor/zzz?_apikey=xxx&url=http://www.example.co.uk/items.php?sortby=Price_LH&per_page=96&size=1%2C12&page=35
因此,在URL中似乎一切正常,但在响应中却没有。
我尝试了其他URL,但在第一个参数之后都被删减了。
您将需要对要发送给API的URL进行URL编码。
原因是服务器将“&”解释为URL https://extraction.import.io/query/extractor/XXX的参数标记。
这就是为什么它们在URL中被剥夺的原因:
http://www.example.co.uk/items.php?sortby=Price_LH
使用以下方法尝试以下方法urllib.quote(row_dict['url'])
:
import requests
import json
import urllib
row_dict = {'url': u'http://www.example.co.uk/items.php?sortby=Price_LH&per_page=96&size=1%2C12&page=35', 'crawler_id': u'zzz'}
url_call = 'https://extraction.import.io/query/extractor/{0}?_apikey={1}&url={2}'.format(row_dict['crawler_id'], auth_key, urllib.quote(row_dict['url']))
r = requests.get(url_call)
rr = json.loads(r.content)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句