プロセルピナ
Top Internet
Mail
Private
Proxy
Capture
Device
Download Config
and
Words
Online
Help
Online
Home
[BACK]
Top > FileDownload > Macro > Ex: Command > FormAnalyser

 
 Ex:FormAnalyserコマンド
Macro Top | Variables | Constants | Commands | Ex-Commands  


 

書式


  Ex:FormAnalyser:   src=(webpage_string)   pos=(form_index)   O:Action=str[(actionUrl_index)]   O:EncType=str[(encType_index)]  

(webpage_string) : string, FormがあるHtmlページのソース
(form_index) : int, (webpage_string)内のFormの位置
(actionUrl_index) : int, Formタグのactionアトリビュートで指定されたURLを設定する 文字列配列のインデックス
(encType_index) : int, Formタグのenctypeアトリビュートで指定されたURLを設定する 文字列配列のインデックス

posO:ActionO:EncType の指定は省略可能です。

ローカル文字列配列を使用する場合は、str[ ] の部分が strl[ ] になります。
ローカル整数配列を使用する場合は、int[ ] の部分が intl[ ] になります。

Pos=でFormタグを検索する開始位置を指定します。省略した場合はsrc=で指定した文字列の先頭から Formタグをサーチします。

このコマンドで解析したフォームは、 Ex:FormAnalyser.Setコマンド で値を設定したり、 Ex:FormAnalyser.Getコマンド で値を読み出したりすることができます。

Post形式のデータは、 Ex:FormAnalyser.GetMultipartFormDataコマンド、または Ex:FormAnalyser.GetUrlencodedコマンド で取得することができます。
パラメータ付きGetのURLで取得する場合は、 Ex:FormAnalyser.GetGetMethodUrlコマンド を使用します。

O:EncTypeで指定した変数には、Form開始タグの enctypeアトリビュート で指定された文字列が設定されます。
例えば、
  <form method="post" enctype="multipart/form-data" id="download">
の場合なら、 multipart/form-data の文字列になります。
ただし、Form開始タグの methodアトリビュートで get が指定されている場合は get の文字列が設定されます。

 

記述例


例1:

例2:


Webページのフォーム要素を解析して、Getを送信する例


上記の例は、str[100] に格納されている文字列(HTMLのソースコードを想定)から、 actionアトリビュートに /gp/search が指定されているフォームを探し(Ex:FormAnalyser.FindFormByAttributeコマンド)、 そのフォームを Ex:FormAnalyserコマンド で解析しています。
Ex:FormAnalyser.Setコマンドで、フォームの title に タイトル という日本語を値として設定し、 Ex:FormAnalyser.GetGetMethodUrlコマンドで Http-Getに使用できるURLとして Shift_JISエンコードで取得しています。
actionアトリビュートが相対パスで指定されているので、 取り出したURLは Ex:UrlCombineコマンド で絶対パスに変換しています。

 

[関連コマンド:値取得] Ex:FormAnalyser.Getコマンド


Ex:FormAnalyserコマンドで解析した後に使用します。
フォームにある、input-text、input-hiddenなどの要素の値を O:value= で指定した変数に取得します。

設定先の変数には str[ ] または strl[ ] の文字列変数を指定します。 値が数値に変換できる文字列の場合は int[ ] や、intl[ ] を指定することもできます。

igC=true を指定した場合は、フォーム内要素を name= でサーチする際に、大文字小文字を無視(Ignore Case)します。
Select、input-radio では、最初に発見されたものを返します。選択状態にあるかどうかは無関係です。

エラーの場合(name=で指定された要素が無いなど)、 O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.Set: name=strl[1] igC=true O:value=intl[5] O:result=strl[2];

 

[関連コマンド:値設定] Ex:FormAnalyser.Setコマンド


Ex:FormAnalyserコマンドで解析した後に使用します。
フォームにある、input-text、input-hiddenなどの要素に値を設定します。 input-radioの場合はこのコマンドではなく、 Ex:FormAnalyser.SelectRadioコマンド を使用します。

すでにURLエンコード済みの状態で value= に値を設定する場合は、
  encoded=true
を設定します。省略した場合はfalseです。 日本語などを value= に設定する場合は、後でフォームデータを取得する時にエンコードする必要があるので falseを設定します (encoded= の指定を省略しても、falseを指定したことになります)。

エラーの場合(name=で指定された要素が無いなど)、 O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.Set: name="title" value="初音" encoded=false O:result=strl[2];

no_dup_check
重複して設定する場合に指定するオプション。 name= で指定する項目が複数必要な場合に指定。 指定しない場合、name= で指定する項目が既にある場合はそれが削除されて、コマンドで指定されたものが登録されます。

no_conv_HTML_CER
value= で指定する文字列に対し、 HTML文字実体参照(HTML Character Entity Reference) の変換を行わないときに指定するオプション。 指定しない場合、 &amp; という文字列は & の記号に変換されます。つまり、指定しない場合(default)、
  value="A&amp;B"
は、
  value="A&B"
を指定したのと同じです。

 

[関連コマンド:値設定] Ex:FormAnalyser.AddTextInputコマンド


multipart/form-data形式で送るポストデータに含まれるのテキストエリアの項目に 値を設定するときに使用するコマンドです。

Ex:FormAnalyserコマンドで解析した後に使用します。
フォームにある、name= のテキストエリアに値を設定します。
すでにURLエンコード済みの状態で value= に値を設定する場合は、
  encoded=true
を設定します。省略した場合はfalseです。 日本語などを value= に設定する場合は、後でフォームデータを取得する時にエンコードする必要があるので falseを設定します (encoded= の指定を省略しても、falseを指定したことになります)。

エラーの場合(name=で指定された要素が無いなど)、 O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.AddTextInput: name="message" value="あいうえお。" encoded=false O:result=strl[2];

no_dup_check
重複して設定する場合に指定するオプション。 name= で指定する項目が複数必要な場合に指定。 指定しない場合、name= で指定する項目が既にある場合はそれが削除されて、コマンドで指定されたものが登録されます。

no_conv_HTML_CER
value= で指定する文字列に対し、 HTML文字実体参照(HTML Character Entity Reference) の変換を行わないときに指定するオプション。 指定しない場合、 &amp; という文字列は & の記号に変換されます。つまり、指定しない場合(default)、
  value="A&amp;B"
は、
  value="A&B"
を指定したのと同じです。

 

[関連コマンド:値設定] Ex:FormAnalyser.AddFileInputコマンド


multipart/form-data形式で送るポストデータに含まれるファイル項目に 値を設定するときに使用するコマンドです。
Ex:FormAnalyserコマンドで解析した後に使用します。

value= にはローカルディスクに実在するファイルをフルパスで指定します。
マルチパート部個別ヘッダの Content-Disposition: に設定されるファイル名は、ファイル名から設定されます。 たとえば、
  value="C:\tmp\work\abc.jpg"
を指定した場合は abc.jpg がファイル名として使用されます。

指定したファイルの内容がポストデータに設定されます。
マルチパート部個別ヘッダの Content-Type: は、ファイルの拡張子から自動設定されます。 たとえば、拡張子が jpg のファイルを指定した場合は、 Content-Type: は image/jpeg になります。

no_dup_check
重複して設定する場合に指定するオプション。 name= で指定する項目が複数必要な場合に指定。 指定しない場合、name= で指定する項目が既にある場合はそれが削除されて、コマンドで指定されたものが登録されます。

no_conv_HTML_CER
value= で指定する文字列に対し、 HTML文字実体参照(HTML Character Entity Reference) の変換を行わないときに指定するオプション。 指定しない場合、 &amp; という文字列は & の記号に変換されます。つまり、指定しない場合(default)、
  value="C:\tmp\A&amp;B.gif"
は、
  value="C:\tmp\A&B.gif"
を指定したのと同じです。
Ex:FormAnalyser.AddFileInputコマンドでは必ず指定します。 value= には実在するファイルのフルパスを指定しますが、 ファイル名に &amp; の文字列が含まれていた場合にそれが内部で &記号 変換されてしまうと、 value= に実在しないファイルを指定したことになってしまうためです。

  【記述例】  Ex:FormAnalyser.AddFileInput: name="upload" value="c:\tmp\abcdef.png" no_conv_HTML_CER O:result=strl[2];

 

[関連コマンド:値設定] Ex:FormAnalyser.SelectRadioコマンド


Ex:FormAnalyserコマンドで解析した後に使用します。
フォームにある、input-radioの値を設定します。
エラーの場合、O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.SelectRadio: name="select-title" value="field-title-begins" O:result=str[0];

 

[関連コマンド:値設定] Ex:FormAnalyser.SelectSelectコマンド


Ex:FormAnalyserコマンドで解析した後に使用します。
フォームにある、selectの値を設定します。
value=に設定する値は、selectに用意されているoptionタグの中から選択しますが、 optionタグに無いものを指定することも可能です。
  【記述例】  Ex:FormAnalyser.SelectRadio: name="setlang" value="en-US";

 

[関連コマンド:値設定] Ex:FormAnalyser.Deleteコマンド


Ex:FormAnalyserコマンドで解析した後に使用します。
name=で指定された項目を、フォームから削除します。
  【記述例】  Ex:FormAnalyser.Delete: name="cancel";

 

[関連コマンド:取得] Ex:FormAnalyser.GetGetMethodUrlコマンド


Ex:FormAnalyserコマンドで解析され、 Ex:FormAnalyser.Setコマンドなどで値設定されたフォームを、 O:url=で指定した変数に Http-Getで使用できる Url-Encoded形式で取得します(文字列値)。

エラーの場合、O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.GetGetMethodUrl: encType="UTF-8" O:url=strl[10] O:result=strl[2];

 

[関連コマンド:取得] Ex:FormAnalyser.GetUrlencodedコマンド


Ex:FormAnalyserコマンドで解析され、 Ex:FormAnalyser.Setコマンドなどで値設定されたフォームを、 O:PostData=で指定した変数に Http-Postで使用できる Url-Encoded形式で取得します(バイナリ値)。

エラーの場合、O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

  【記述例】  Ex:FormAnalyser.GetUrlencoded: encType="UTF-8" O:PostData=strl[10] O:result=strl[2];

 

[関連コマンド:取得] Ex:FormAnalyser.GetMultipartFormDataコマンド


Ex:FormAnalyserコマンドで解析され、 Ex:FormAnalyser.Setコマンドなどで値設定されたフォームを、 O:PostData=で指定した変数に Http-Postで使用できる multipart/form-data形式で取得します(バイナリ値)。
日本語などで設定されている値は、encType= で指定したタイプでエンコードされます。 フォームの記述されているHTMLページのcharsetを指定します。

結果に含まれる boundary= で指定されるboundary文字列は 自動で設定されます。 boundary文字列を知りたい場合は、 O:cType= を指定して取得してください。

エラーの場合、O:result=で指定された変数に、 "NG:" で開始される文字列が設定されます。

O:cType=で指定した変数には、
  multipart/form-data; boundary=99999999999;
といった値が文字列で設定されます。 boundary文字列は自動的に決定されます。
O:cType=の指定は省略可能です。

  【記述例】  Ex:FormAnalyser.GetMultipartFormData: encType="UTF-8" O:PostData=binl[10] O:result=strl[2] O:cType=strl[3];

 

Sample


次の例は、Amazonで和書を検索するサンプルです。

このサンプルは「プロセルピナ」のインストール時に {{GTMAIL_HOME}}\ctrl\macroフォルダ に、 「和書検索 指定文字から開始されるタイトル.txt」 のファイル名で用意されているマクロの内容と同じです。
このマクロはテキストフォームから簡単に使用することができます。
→ テキストフォームからのダウンロードマクロの実行


テキストフォームから、検索したい文字列を選択(反転表示)し、 Macroメニューからダウンロードマクロ
  「和書検索 指定文字から開始されるタイトル.txt」
を選択すると、Amazonで和書検索を行い、結果をWebブラウザにプッシュします。

普通の和書検索では、指定した文字列が含まれる本をサーチしますが、 このマクロでは詳細サーチフォームの select-titleラジオボタンで field-title-begins を選択し、 指定した文字列から開始される本のみに絞り込んでいます。

フォームのラジオボタンの操作は、 Ex:FormAnalyser.SelectRadioコマンド で行うことができます。


[BACK]
プロセルピナ