2017-08-02 98 views
3

Azure Logic Appを作成して、インターネット上の特定のWebサイトを常に要求し、受け取ったHTMLを解析したいと考えています。Azure Logic Appsでテキストを解析する

私はLogic Appを作成し、インターバルとHTTPリクエストアクションを設定しました。私は、HTMLコードの簡単な正規表現の操作のための次のステップとして選ぶべきアクション

私の頭に浮かぶのは、仕事をするAzure Functionを作成することですが、そのようなタスクに適した他のソリューションがあるのだろうかと思います。

できるだけシンプルにしたいです。


編集:

ただ、いくつかのクールな機能を見つけました。 Logic Appsには、プリミティブ型の基本的な表現がいくつか含まれています。

残念ながら、それにはregexまたはstring.containsが欠けています。

今のところ、私はAzure関数を試してみます。

+1

Azureの機能が私の提案になるJSON形式の流れです。カスタムコネクタを作成することもできますが、それはおそらくオーバーヘッドになります。 –

答えて

0

私はアズールによって提供さWorkflow Definition Languageとビルディング・ブロックを使用した私の問題を解決するために管理してきました。

Azure関数のアイデアはそれほど悪くなく、さらに複雑なケースには完全に適合しますが、私が言及したように、できるだけシンプルにしたいと思っていました。

これは私の流れが今見える方法です。

は完全を期すために、ここで

{ 
    "$connections": { 
     "value": { 
      "wunderlist": { 
       "connectionId": "/subscriptions/.../providers/Microsoft.Web/connections/wunderlist", 
       "connectionName": "wunderlist", 
       "id": "/subscriptions/.../providers/Microsoft.Web/locations/northeurope/managedApis/wunderlist" 
      } 
     } 
    }, 
    "definition": { 
     "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", 
     "actions": { 
      "Condition": { 
       "actions": { 
        "Create_a_task": { 
         "inputs": { 
          "body": { 
           "completed": false, 
           "list_id": 000000000, 
           "starred": true, 
           "title": "@{variables('today date')}" 
          }, 
          "host": { 
           "connection": { 
            "name": "@parameters('$connections')['wunderlist']['connectionId']" 
           } 
          }, 
          "method": "post", 
          "path": "/tasks", 
          "retryPolicy": { 
           "type": "none" 
          } 
         }, 
         "limit": { 
          "timeout": "PT20S" 
         }, 
         "runAfter": {}, 
         "type": "ApiConnection" 
        }, 
        "Set_a_reminder": { 
         "inputs": { 
          "body": { 
           "date": "@{addHours(utcNow(), 3)}", 
           "list_id": 000000, 
           "task_id": "@body('Create_a_task')?.id" 
          }, 
          "host": { 
           "connection": { 
            "name": "@parameters('$connections')['wunderlist']['connectionId']" 
           } 
          }, 
          "method": "post", 
          "path": "/reminders", 
          "retryPolicy": { 
           "type": "none" 
          } 
         }, 
         "limit": { 
          "timeout": "PT20S" 
         }, 
         "runAfter": { 
          "Create_a_task": [ 
           "Succeeded" 
          ] 
         }, 
         "type": "ApiConnection" 
        } 
       }, 
       "expression": "@contains(body('HTTP'), variables('today date'))", 
       "runAfter": { 
        "Initialize_variable": [ 
         "Succeeded" 
        ] 
       }, 
       "type": "If" 
      }, 
      "HTTP": { 
       "inputs": { 
        "method": "GET", 
        "uri": "..." 
       }, 
       "runAfter": {}, 
       "type": "Http" 
      }, 
      "Initialize_variable": { 
       "inputs": { 
        "variables": [ 
         { 
          "name": "today date", 
          "type": "String", 
          "value": "@{utcNow('yyyy/MM/dd')}" 
         } 
        ] 
       }, 
       "runAfter": { 
        "HTTP": [ 
         "Succeeded" 
        ] 
       }, 
       "type": "InitializeVariable" 
      } 
     }, 
     "contentVersion": "1.0.0.0", 
     "outputs": {}, 
     "parameters": { 
      "$connections": { 
       "defaultValue": {}, 
       "type": "Object" 
      } 
     }, 
     "triggers": { 
      "Recurrence": { 
       "recurrence": { 
        "frequency": "Day", 
        "interval": 1, 
        "startTime": "2017-08-01T23:55:00Z", 
        "timeZone": "UTC" 
       }, 
       "type": "Recurrence" 
      } 
     } 
    } 
} 
0

あなたはおそらく正しい軌道にいるでしょう。 Azure関数はこれを実装する最も適切な方法です。 APIアプリケーションはオプションですが、それは必要以上に重いプラットフォームです。

0

の線に沿ってAzureの機能作成:

{

log.Info( "C#のHTTPトリガ機能が要求を処理します")。

// Get request body 

dynamic data = await req.Content.ReadAsAsync<object>(); 



// Set name to query string or body data 

string input = data?.input.ToString(); 

var regexJson = data?.regexList; 

var regexes = regexJson.ToObject<List<RegexReplace>>(); 



foreach (var regex in regexes) 

{ 

    var re = Regex.Replace(regex.Regex, "\\\\","\\"); 

    var replace = Regex.Replace(regex.Replace, "\\\\","\\"); 

    input = Regex.Replace(input, "\\\"","\""); 

    input = Regex.Replace(input, re, replace); 

} 



input = Regex.Replace(input, "[\\r\\n]", ""); 



return data.regexList == null 

    ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body") 

    : req.CreateResponse(HttpStatusCode.OK, input, "application/json"); 

}

パブリッククラスREGEXREPLACE

{

public string Regex { get; set; } 

public string Replace { get; set; } 

は}

関連する問題