1. 概要
Octoparse アドバンスド API を使用する前に、少なくとも 1 つの実行可能なタスクが設定されてください。なお、プロフェッショナルプランのアカウントが必要です。(アカウントをお持ちでない方は、 こちらから登録してください。) Octoparse API に接続することで、抽出されたデータやタスク情報、さらにはタスクのコントロール (アドバンスド API) まで簡単に取得することができ、ご自身のアプリケーションとの連携による効率的なデータ抽出を実現できます。
1.2. 連絡先
連絡先: Octoparse support team
Email: support@octoparse.jp
1.3. URL 標準
すべてのリクエストは以下のベース URL でエンコードされた URL であります。
https://advancedapi.octoparse.com/
例として、「オフセットによるデータを取得する」のリクエストは、次のようになります:GET http://advancedapi.octoparse.com/api/alldata/GetDataOfTaskByOffset?taskId={taskId}&offset={offset}&size={size}
注:このドキュメントの{xxxx}はプレースホルダを表しており、ユーザーはこれを実際の値に置き換える必要があります。例として、タスク ID が abc、オフセットが 1、サイズが 10 の場合、URL は https://advancedapi.octoparse.com/api/alldata/GetDataOfTaskByOffset?taskId=abc&offset=1&size=10 となります。
1.4. OAuth2.0 アクセストークンを取得する
Octoparse API にアクセスする前に、OAuth2.0 に基づく Access Token を取得する必要があります。
1.4.1. 新アクセストークンを取得する
新しいアクセストークンを取得するには、ユーザー名とパスワードが必要です。
リクエスト
POST https://advancedapi.octoparse.com/token
パラメーター
username={userName}&password={password}&grant_type=password
リクエストのContent-Type
application/x-www-form-urlencoded
レスポンス
Access Token
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "access_token": "ABCD1234", //アクセストークン "token_type": "bearer", //トークンタイプ "expires_in": 86399, //アクセストークンの有効期限(秒)(有効期限内に同じトークンを繰り返し使用することをお勧めします) "refresh_token": "refresh_token" //認可コード(アクセストークンを更新する際に使用します) }
API メソッドを呼び出す際には、「Access_Token」が必要です。以下の形式で HTTP ヘッダに追加してください。
HeaderName: Authorization Value: bearer {access_token}
注:「bearer」と「access_token」の間にはスペースがある。例として、Access Token が AA11BB22...CC33 の場合、ヘッダは「Authorization: bearer AA11BB22...CC33」とします。 Access Token には有効期限がありますので、有効期限内に同じトークンを繰り返し使用することをお勧めします。
1.4.2. アクセストークンを更新する
アクセストークンの有効期限が切れると、ユーザーは「refresh_token」でアクセストークンを更新することができます。「Refresh Token」は、ユーザー名とパスワードに通じて新トークンを取得の方がより安全です。
注: 各「refresh_token」は一度しか使用できません。現在のリクエストから返された新「Refresh Token」は、次のリクエストに使用されるべきです。
リクエスト
POST https://advancedapi.octoparse.com/token
パラメーター
refresh_token={refresh_token}&grant_type=refresh_token
リクエストのContent-Type
application/x-www-form-urlencoded
レスポンス
Access Token
注: レスポンス HTTP ステータスコードは「200」でなければなりません。そうでない場合は、HTTP ステータスコードを参照して問題を解決してください。
2. 手順
Octoparse は API の使用を 20 リクエスト / 秒に制限されています。ステータスコード「429」を受信した場合は、アクセス頻度を下げてください。
注: Octoparse は、API アクセス頻度を制限するためにリーキーバケットアルゴリズムを使用します。リクエストの最大数は、任意の 5 秒間の時間間隔内で、100 になります。
異常なHTTPステータスコード
レスポンス HTTP ステータスコードは「200」でなければなりません。そうでない場合は、HTTP ステータスコードを参照して問題を解決してください。
2.1. タスクグループ情報を取得する
2.1.1.すべてのタスクグループの情報をリストアップする
リクエスト
レスポンス
タスクグループ情報とリクエストステータスを含む JSON 形式のテキスト。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": [ { "taskGroupId": 1, "taskGroupName": "Example Task Group 1" }, { "taskGroupId": 2, "taskGroupName": "Example Task Group 2" } ], "error": "success", "error_Description": "Action Success" }
2.2. タスクを管理する
2.2.1.グループ内のタスク一覧を表示する
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskGroupId |
タスクグループ ID |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
タスク ID(taskId)、タスク名(taskName)、ユーザー ID とリクエストステータスを含む JSON 形式のテキスト。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": [ { "taskId": "337fd7d7-aded-4081-9104-2b551161ccc8", "taskName": "Example Task 1", "creationUserId": "5d1e4b3c-645c-44ab-ac0e-bfa9ad600ece" }, { "taskId": "4adf489b-f883-43fa-b958-0cfde945ddb7", "taskName": "Example Task 2", "creationUserId": "5d1e4b3c-645c-44ab-ac0e-bfa9ad600ece" } ], "error": "success", "error_Description": "Action Success" }
2.2.2.タスクステータスを取得する
タスクのステータスを一括取得ことができます。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskIdList |
タスク ID リストを含む JSON 形式のテキスト。 |
request body にパラメーターを定義してください。 |
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "taskIdList": [ "337fd7d7-aded-4081-9104-2b551161ccc8", "4adf489b-f883-43fa-b958-0cfde945ddb7" ] }
レスポンス
タスクステータスコード: 0 = 実行中, 1 = 停止中, 2 = 実行完了, 3 = 実行待ち, 5 = 準備完了
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": [ { "taskId": "337fd7d7-aded-4081-9104-2b551161ccc8", "taskName": "Example Task 1", "status": 1 }, { "taskId": "4adf489b-f883-43fa-b958-0cfde945ddb7", "taskName": "Example Task 2", "status": 2 } ], "error": "success", "error_Description": "Action Success" }
2.2.3.タスクパラメーターを取得する
これは特定のタスクのパラメーターを取得することができます。例として、「Webページを開く」アクションからのURL、「テキストを入力」アクションからのテキスト値、「ループアイテム」アクションからのテキストリスト / URL リストなどです。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskId |
タスク ID |
リクエスト URL にパラメーターを定義してください。 |
name |
設定したパラメーター名 (navigateAction1.Url,loopAction1.UrlList,loopAction1.TextList など) |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
タスクのパラメーターの値(または値の配列)とリクエストステータス。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": [ "http://www.octoparse.jp/", "http://www.skieer.com/" ], "error": "success", "error_Description": "Action Success" }
2.2.4.タスクパラメーターを更新する
このメソッドを使用して、タスクパラメーターを更新します(現在は「Webページを開く」アクションからのURL、「テキストを入力」アクションからのテキスト値、「ループアイテム」アクションからのテキストリスト / URL リストの更新にのみ使用可能です)。
注:URL とテキスト値の場合は、文字列型を直接使用してください: "value":"navigateAction1.Url" 。N 個のテキストリスト / URL リストの値を更新する場合は、"value":['text1', 'text2', 'text3', 'textN'] を使用してください。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
ruleParaInfo |
タスクパラメーター (navigateAction1.Url,loopAction1.UrlList,loopAction1.TextList) |
request body にパラメーターを定義してください。 |
リクエストのContent-Type
application/json, text/json
リクエストの例
{ "taskId": "337fd7d7-aded-4081-9104-2b551161ccc8", "name": "loopAction2.TextList", "value": [ "Octparse", "Skieer Infomation" ] }
レスポンス
タスクパラメーターが正常に更新されたかどうかを表示されます。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "error": "success", "error_Description": "Action Success" }
2.2.5.タスクループリストに URL / テキストを追加する
このメソッドを使用して、既存のループに新しい URL / テキストを追加します。
注:N 個のテキストリスト / URL リストの値 (value) を更新する場合は、"value":['text1', 'text2', 'text3', 'textN'] を使用してください。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
ruleParaInfo |
既存のループのパラメーター |
request body にパラメーターを定義してください。 |
リクエストのContent-Type
application/json, text/json
リクエストの例
{ "taskId": "4adf489b-f883-43fa-b958-0cfde945ddb7", "name": "loopAction1.UrlList", "value": [ "http://www.octoparse.jp/", "http://www.skieer.com/" ] }
レスポンス
新パラメーター値が正常に追加されたかどうかを表示されます。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "error": "success", "error_Description": "Action Success" }
2.2.6.タスクの実行を開始する
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskId |
タスク ID |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
ステータスコード (レスポンス内容の「data」パラメーター):1 = 起動成功, 2 = タスク実行中, 5 = タスク設定エラー, 6 = アクセス拒否, 100 = その他のエラー
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": 1, "error": "success", "error_Description": "Action Success" }
2.3. データを抽出する
2.3.1.データをエクスポートする
エクスポートされていないデータをエクスポートします。データは、エクスポート後に(status=exported ではなく)status=exporting とタグ付けされます。この方法では、同じデータセットをこの方法で複数回エクスポートすることができます。データが正常に取得されていることを確認した後、データのステータスを「exported」に更新したい場合は、2.3.2 の手順でステータスの更新を行ってください。
注:エクスポートが中断された場合(ネットワークの接続中断など)、この方法を使用して再度データをエクスポートしてください。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskId |
タスク ID |
リクエスト URL にパラメーターを定義してください。 |
size |
データ行数(1 ~ 1000行) |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
データとリクエスト状態
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": { "total": 100000, "currentTotal": 4, "dataList": [ { "State": "Texas", "City": "Plano" }, { "State": "Texas", "City": "Houston" }, { "State": "Texas", "City": "Austin" }, { "State": "Texas", "City": "Arlington" } ] }, "error": "success", "error_Description": "Action Success" }
2.3.2.データの状態を更新する
これにより、データの状態が「exporting(抽出中)」から「exported(抽出完了)」に更新されます。
注:API「タスクデータのエクスポート」(api/notexportdata/gettop)からエクスポートされたデータが正常に取得されていることを確認した上で、この方法を使用してください。
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskId |
タスク Id |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
タスクの状態が正常に変更されたかどうかを表示されます。
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "error": "success", "error_Description": "Action Success" }
2.4. データを取得する
2.4.1.オフセットによるデータを取得する
このメソッドには、リクエストにはオフセット、サイズ、タスク ID などのパラメーターが必要です。 オフセットのデフォルト値は 0 (offset=0)、サイズは size∈[1,1000] とします。返されたオフセット(offset > 0)は、次のリクエストに使用されます。 例として、タスクは 1000 行のデータがある場合、パラメーター:offset = 0, size = 100 を使用すると、最初の 100 行のデータとオフセット x(x は必ずしも 100 とは限らない)が返されます。 2 回目のリクエストを行う場合、最初のリクエストから返されたオフセット、offset = X, size = 100 を使用して、 次の 100 行のデータ(101 行目から 200 行目まで)を取得し、次のオフセット offset=x1 も返されました。x1 を次の開始オフセットとして使用する、というようにしています。
注:この方法はデータを取得するためだけに使用されますが、データの状態には影響しません。(エクスポートされていないデータはエクスポートされていない状態のままになります)
リクエスト
パラメーター
パラメーター | 説明 | 備考 |
---|---|---|
taskId |
タスク ID |
リクエスト URL にパラメーターを定義してください。 |
offset |
オフセットが 0 以下の場合は、最初の行からデータが返されます。 |
リクエスト URL にパラメーターを定義してください。 |
size |
取得データ量(1~1000の範囲) |
リクエスト URL にパラメーターを定義してください。 |
レスポンス
データとリクエスト状態
レスポンスのContent-Type
application/json, text/json
レスポンスの例
{ "data": { "offset": 4, "total": 100000, "restTotal": 99996, "dataList": [ { "State": "Texas", "City": "Plano" }, { "State": "Texas", "City": "Houston" }, { "State": "Texas", "City": "Austin" }, { "State": "Texas", "City": "Arlington" } ] }, "error": "success", "error_Description": "Action Success" }
3. 参照
3.1. HTTP ステータスコード
エラーコードが返ってきた場合は、以下のステータスコード表を参照して問題を解決してください。
HTTP ステータスコード | Inner ステータスコード | 説明 |
---|---|---|
200 |
ok |
操作は成功しました。 |
400 |
invalid_grant |
ユーザー名またはパスワードが間違っています。 |
400 |
unsupported_grant_type |
POST形式が正しくありません。正しいフォーマットは、username={username}&password={password}&grant_type=passwordです。 |
401 |
unauthorized |
アクセストークンの有効期限が切れているか、不正のため無効です。新アクセストークンを取得してください。 |
403 |
user_not_allowed |
許可が拒否されました。データ API をご利用になる場合はスタンダードプランへ、アドバンスド API をご利用になる場合はプロフェッショナルプランへアップグレードしてください。 |
404 |
not_found |
HTTP リクエストが認識されません。正しい URL でリクエストしてください。 |
405 |
method_not_allowed |
HTTP メソッドはサポートされていません。インターフェースでサポートされている方法を使用してください。 |
429 |
quota_exceeded |
リクエスト回数が制限値を超えています。アクセス頻度を 20 回/秒以下にしてください。 |
503 |
service_unavailable |
サービスは一時的に利用できません。あとでもう一度お試しください。 |
3.2. サンプルコード
サンプルコード:
Python: ApiSamples/Code/Python/
Java: ApiSamples/Code/Java/
PHP: ApiSamples/Code/Php/
(他の言語も近日中にリリース予定です。)