2016-07-20 12 views
2

私はimport.io APIを呼び出そうとしています。Pythonはパラメータを使用してURLで呼び出しを要求します

'?https://extraction.import.io/query/extractor/ {{crawler_id}} _ AP​​Iキー= 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にもパラメータが必要です。

http://www.example.co.uk/items.php?sortby=Price_LH

そして、これではありません。私は上記の例のように、通常の文字列として渡した場合、私はAPIのレスポンスを取得するときしかし、APIレスポンスは、最初のパラメータだけ前の部分を含んでいます。それは代わりに私が渡された1の不完全な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) 

そして、私はreusltを印刷:

"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で試してみましたが、最初のパラメータの後にすべてが削除されました。

+0

import.io'のAPIは、残りの引数を受け入れ 'のように思え。 – tanglong

答えて

5

APIに送信するURLはURL encodeになります。

この理由は、アンパサンドが、サーバーの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) 
+0

はチャームのように働いた、thx! – johan855

関連する問題