GuideH

正規表現汎用ダウンローダー

Bathtub w/ Aid v2.0A

ダウンロードエンジン Bathtub 使用方法

---目次---

特徴

基本動作:操作画面概要説明とURL解析の流れ

TopURL欄:ダウンロードサイトのURL、連番URL

PageURL欄:リンクページの正規化パターン、適用階層、URLの選択と置換、フォルダ作成

ItemURL欄:アイテムダウンロードURLの正規化パターン、適用階層、URLの選択と置換・代入置換

保存フォルダ:保存フォルダの構成、Childフォルダ、Childフォルダ2、title名のSubフォルダ

Fileモード:複数TopURLリストを使った連続ダウンロード

重複アクセスの回避:URLのハッシュテーブル

正規化パターン作成条件設定:パターン作成で使用するhtmlのタグ文字列の抽出

正規化パターン作成:htmlから得たタグ情報でPageURL、ItemURLパターン作成、パターンマッチ

その他の機能:URLショートカット、エンコーディング、フォント変更、インジケータ、Referer

パターン記述例:サンプルhtmlで正規化パターンの例示

補足資料:パターンマッチオプション

※BathAidの使い方はBathAid HowtoA.htmlをご覧ください。

 

1.特徴

 本アプリは正規表現を利用する汎用ダウンローダーで、プリプロセッサに相当する BathAid とダウンロードエンジンの Bathtub から構成されています。

 プリプロセッサに相当する BathAid はターゲットサイトをWeb表示しハイーパーリンク/バナーをクリックするだけでエンジンに供給する正規表現パターンを生成します。正規表現に触れたことの無い人も簡単に Bathtub を利用することができるようになりました。

次のような特徴があります。

・プリプロセッサ BathAid により正規表現を意識せずに簡単操作で正規化パターンを生成可能

・URLやWeb titleに応じて保存フォルダを変更してアイテムの自動仕分け保存を提供

・ダウンロードエンジン Bathtub は正規化パターンによる柔軟性の高いダウンロードを提供

・連番URL、ファイルリスト(Fileモード)による省力化ダウンロードを提供

・URL取得の条件設定や階層管理で無駄なアクセスを最少化して効率的なダウンロードを提供

・ダウンロードエンジン Bathtub とプリプロセッサ BathAid が相互呼び出し機能で連携

 

正規表現には流派がありますが、Microsoftの.NET Framework の正規表現に準拠しています。

その関連サイトを次に記します。

https://msdn.microsoft.com/ja-jp/library/hs600312(v=vs.110).aspx

https://msdn.microsoft.com/ja-jp/library/az24scfc(v=vs.110).aspx

 

本アプリは パターン作成アプリ『BathAid』の他に正規表現読み解き・作成ツール RegEx7 を同梱しています。本アプリからRegex7を呼び出して正規化パターン作成に利用することができます。

 

2.基本操作と基本機能

 Bathtubの操作画面です。

 主要部分をクリックすると説明にジャンプします。

 (図中の番号はこの節の(1)と(3)の説明に付記されている番号です)

MainPic

(1)基本操作と動作 

 本アプリは次のような流れで操作します、合わせて各部名称と機能概略を説明します。

0.BathAidの呼び出し

 このボタンをクリックしてBathAidを呼び出します。同時に①に記述されたURLを送りそのサイトのWebが表示されます。

BathAidの使い方は別稿BathAidHowtoをご覧ください。

①. TopURL欄:ダウンロードサイトURLの記述

 本アプリではダウンロードの起点となるURLをTopURLと呼称します。この欄にダウンロードするサイトのURL(TopURL)を記入します。Copy&PasteまたはDrag&Dropで入力します。

 TopURLのリンクを辿る過程で得られるPageURLにアクセスするとき、そのURLがこの欄に表示されます。

②.PageURL欄:リンクページのPageURL正規化パターンの記述

 『PageURLを抽出』にチェックを入れます、これでPageURL欄が使える状態になります。

 この欄にTopURLから得られるhtmlに記述されたリンクURLをキャプチャするための正規化パターンを記述します。 本アプリではこのリンクURLをPageURLと呼称します。ダウンロードでは、TopURL欄のURLにアクセスしてhtmlをダウンロードし、正規化パターンを用いてPageURLをキャプチャします。

 Enterキーで区切り複数の正規化パターンを記述することができます。

 この欄の表示行数が4行を超える時に欄をクリックすると欄が下方に拡大されます。元に戻すには欄をダブルクリックするか、右クリックしてメニューから選択します。

③. ItemURL欄:アイテムダウンロードのItemURL正規化パターンの記述

 この欄にTopURLから得られるhtmlに記述されたアイテムのリンクURLをキャプチャするための正規化パターンを記述します。本アプリではアイテムのリンクURLをItemURLと呼称し、PageURLと区別しています。ダウンロードでは、TopURL欄のURLにアクセスしてhtmlをダウンロードし、正規化パターンを用いてItemURLをキャプチャします。

 Enterキーで区切り複数の正規化パターンを記述することができます。

 この欄の表示行数が4行を超える時に欄をクリックすると欄が下方に拡大されます。元に戻すには欄をダブルクリックするか、右クリックしてメニューから選択します。

④. 階層の深度指定:アイテムダウンロードする階層の最大深度

 ここでダウンロードする階層の最大深度を指定します。

 この指定より深い階層でのダウンロードは行われません。

 ※本アプリでは最大深度階層は9に制限しています。

⑤. 保存フォルダの設定:アイテム保存の『親フォルダ』の指定

 ここでダウンロードしたアイテムを保存するフォルダの親となるフォルダを指定します。フォルダアイコンをクリックして所望のフォルダを選択します。

 このフォルダ配下にChildフォルダやSubフォルダを作成しダウンロードしたアイテムの仕分け保存ができます。

⑥. ダウンロードの開始

 『Download Items』にチェックを入れます。チェック無しの状態では実際のダウンロードは行われずに抽出できたPageURLとItemURLを確認することができます。

 『開始』ボタンをクリックするとダウンロードが始まり、ボタン背景色が黄色になると同時に文字が『中断』に変わります。

 ボタンの表示が『中断』の状態でボタンをクリックするとダウンロードを中断することができます。

 

 ここまでの操作でTopURLのダウンロードが始まります。

 このほかに保存フォルダの変更、アクセスの重複回避、URL文字列置換などに関する設定がありますが、デフォルトのままで支障はありません。

(2) 階層とURLの再帰解析

 本アプリではTopURLを第0階層 とし、PageURLのリンクを辿り潜るたびに階層が+1されます。プログレスバーの左に現在アクセス中の階層が表示されます。

 階層の数え方を定義します。初めてダウンロードする時にTopURLがダウンロードの始点となります。

 このURLから得られるhtmlからキャプチャして得られるのが他のページへ飛ぶリンクURLとアイテムをダウンロードするURLになります。

 本アプリでは、1つの階層の動作を、与えられたURLから他のページへのリンクURLの取得とアイテムの取得(ダウンロード)と定義しています。リンクURLは次の階層へのInputとなります。

 階層深度指定が0の場合、TopURLが jpg, gif, png, bmp, pdf, mp4, mp3, wmv, zipのアイテムを指定するURLのときそれらアイテムがダウンロードされ終了します。これは特殊なケースで通常はTopURLにはサイトURLなど非アイテムURLを記入します。

 階層深度指定が0の場合、アイテムのダウンロードは実行しますが、他のページへのリンクURLは取得しません、必要が無いからです。階層1以上の指定でリンクURLも取得することになります。

 本アプリでは与えられたURLに対してhtmlをダウンロードしてそこからItemURLをキャプチャしてアイテムをダウンロードし、次にPageURLをキャプチャし、そのPageURLからhtmlをダウンロードするという動作を繰り返します。

 htmlをダウンロードするたびに階層が一つ深くなります。

 与えられたURLの解析(PageURL/ItemURlのキャプチャ)動作は、次のような流れになります。

 (1)TopURL/PageURLのhtmlを取得し、そこからItemURLをキャプチャします。

 (2)ItemURLが得られたら、全てのItemURLを順にダウンロードします。

 (3)次に(1)と同じhtmlからPageURL(次階層のURL)をキャプチャします

 (4)PageURLが抽出できたら、全てのPageURLに順にアクセスします。

 1つのURLに対して(1)~(3)の動作があり、(3)で得られたURLから新たなhtmlをダウンロードします。

 (4)のPageURLのアクセスは(1)の動作そのものになります。実際の動作はURLが与えられるとどんどんURLを辿ることになり、そのたびに階層が深くなります。

 ルートを辿り、指定された階層深度に到達するかPageURLが得られなくなったらそのルートの解析はそこで終了します。

 階層が深くなるたびにルートが枝分かれしますが、全ルートの解析が完了するまで(1)~(3)の動作が繰り返されます。

 URLのキャプチャは Microsoftの.NET Framework の正規表現に準拠したRegex メソッド(Pattern, EvaluateOption, TimeOut) で行い、オプションの基本は既定のオプションで、 そこから、大文字小文字を区別せず、マルチライン設定に変更しています。タイムアウトは10秒に設定しています。

 URL解析の流れ図

 階層深度指定が3の場合の流れは次のようになります。矢印がアクセスする順序を示しています。

 4か所のPageURL下の青文字は、そのPageURLで得られるリンクURLの種類と数を表しています。

 一つのPageURLをどんどん掘り下げ、指定階層になるまでそれを継続します。

 階層3では深度設定に達しているのでそれ以上掘り下げずPageURLの取得は行いません。

Layer

 

(3)各部の名称と機能

 文番号はアプリ画面のレイアウト図の番号と対応しています。①から⑥は(1)をご覧ください。

TopURL記述欄

 (1)-①.

PageURL記述欄

 (1)-②

ItemURL記述欄

 (1)-③

階層の深度指定

 (1)-④

保存フォルダの設定

 (1)-⑤

⑥ 『開始』ボタン

 (1)-⑥

チェックボックス『File Mode』:

 ここにチェックを入れるとFileモードになります。

 Fileモードは複数のTopURLのリストを作成し、そこからTopURLを1行ずつ読み込んで連続ダウンロードする機能です。

 URLリストを保存するテキストファイル名は任意のファイル名になります。

チェックボックス『PageURLを抽出する』:

 ここにチェックを入れると右側のPageURL欄が利用可能になります。チェックが無い場合、TopURL/PageURLから得られるhtmlにお仕着せの正規化パターンを用いてPageURLを抽出します。

 チェックを外すと、PageURL欄が利用不可になり、『htmlのみを追う』が利用可能となります。

 チェックボックス『htmlのみを追う』にチェックを入れるとhtmlから href="xxxxxxxxxxxx.html"のように末尾がhtm(l)のURLを選んで取得します。

⑨ KeyWordと記述欄:

 URL抽出やフォルダ作成につかうKeyWordを指定します。KeyWord欄に平文でそのまま記入するか、( )で括って正規化パターンを記入します。正規化パターンが記入された場合TopURLの文字列に対して用いられ、開始ボタンでダインロードが開始するとKeyWord欄はキャプチャされたKeyWordに書き変わります。

 通常使えない状態ですが、『String with KeyWord』『Child』と隣の『KeyWord』『SubF』と隣の『KeyWord』のどれかにチェックが入ると使用可能になります。 

チェックボックス『String with Keyword』:

 PageURL欄及びItemURL欄の正規化パターンの<String>Groupsでキャプチャした文字列の中にKeyWord欄の文字列を含む時、<URL>Groupsでキャプチャした文字列をURLとして抽出することができます。

 この機能はPageURL欄とItemURL欄それぞれで独立して設定することができますが、KeyWordは共通です。

チェックボックス『Child』:

 ここにチェックを入れると、親フォルダの下にChildフォルダを生成して保存フォルダを変更することができます。

 生成するChildフォルダの名前は右にある『KeyWord』にチェックを入れて⑨のKeyWordを用いるか、Child欄に記入された平文文字列か、( )で括られた正規化ーパターンでキャプチャされる文字列のいずれかを選択することができます。

チェックボックス『title名サブフォルダ』:

 PageURLのhtmlからページのtitleを取得してフォルダ名として、保存フォルダ欄記載のフォルダの下にSubフォルダを生成しアイテムの保存フォルダをURLごとに変更することができます。

 URLのhtmlでtitleが得られない場合、保存フォルダ欄記載のフォルダに保存されます、この時『SubF』が設定されていると条件に合致する文字列を取得し、それをフォルダ名としたSubフォルダを生成します。

チェックボックス『SubF』:

 『SubF』にチェックを入れると、PageURLのhtmlからtitleが得られない場合、⑨Keywordを用いるか、SubF欄に記入された平文文字列か、( )で括られた正規化パターンでキャプチャされる文字列のいずれかを選択してSubフォルダ名とすることができます。

 その右の『KeyWord』にチェックを入れるとhtmlからは取得せずKeyWord欄の文字列をSubフォルダ名に利用します。 (KeyWord欄が正規化パターンの場合はキャプチャされた文字列)

 『KeyWord』にチェックが無い場合、SubF欄が平文の時は記載された文字列がSubフォルダ名となります。( )で括られている場合その文字列は正規化パターンでPageURLのhtmlに用いて文字列をキャプチャしてSubフォルダ名とします。

⑭ チェックボックス『Download Items』:

ダウンロードを実行する時は『Download Items』にチェックを入れます。

 『Download Items』のチェックを外すと、アイテムのダウンロードはせずに、抽出されたPageURLとItemURLのリストをファイルに出力します。設定した正規化パターンの動作確認をすることを想定した機能です。

 このリストファイルはURLリストを開くボタンをクリックして開くことができます。リストファイルは、⑧保存フォルダ欄に記載されたフォルダに 「⑰の『設定名称』_TargetURL.txt」 として保存されます。

チェックボックス『ダウンロードURLのShort Cutを保存』:

 ダウンロードURL(PageURL)のショートカットをアイテムの保存フォルダに保存することができます。

ボタン「Regex Pattern作成」:

 正規化パターンを作成するための補助機能を呼び出します。詳しくは9章をご覧ください。

⑰ 設定名称欄:

 この欄に記載された『設定名称』はアプリの現在の設定を保存するときのファイル名として用いられます。

 その時のファイル名は 『設定名称』.txt になります。

 また⑭のリストファイルの名称のにも使用します。

⑱ アイテムダウンロード制限時間:

 アイテムダウンロードに費やす時間がこの制限時間を超えた場合そのダウンロードはキャンセルされます。

⑲クリップボード入力

 URLをクリップボードにコピーしてTopURL欄に入力します。クリップボードにコピーするとダウンロードが開始されますので、他の項目の設定を済ませておきます。

⑳ Error Log出力

 ダウンロード中にダウンロードできなかった場合Error LogにそのURLの記録を残します。

 チェックの有無に拘わらず、ダウンロードできない事象が発生した時には表記文字色が赤に変わります。

 開始ボタンで新たなダウンロードが始まる時にこの赤文字は元に戻ります。

1 チェックボックス『Replace』:キャプチャ結果の置換

 正規化パターンでURLをキャプチャした段階で文字列置換ができます。

 置換方法は正規化表現で記述されます。詳細は「Microsoftの.NET Framework の正規表現」を参照してください。

 PageURLItemURLそれぞれに独立した置換機能があります。

2 抽出URLの置換欄:

 抽出されたURLに対して文字列置換を実施します。置換対象文字列、置換文字列を指定します。欄が空白の場合この機能は働きません。PageURLItemURLそれぞれに独立した置換機能があります。

 更に、ItemURLの置換にはキャプチャした文字列を置換する機能があります。

チェックボックス『Word forURL置換』:<Word>で抽出した文字列を置換対象文字列文字列に代入

 キャプチャGroups<Word>を用いて文字列をキャプチャしておき、文字列置換対象文字列の文字列指定の中に※を記載しておくとキャプチャしておいた文字列を※の部分に代入することができます。

Site Root Pathの指定

 キャプチャされたURLが「/」で始まる時、ルートパスをその前に置いてURLが完成します。ルートパスの取得は自動的に行っていますが、正しいルートパスが得られない場合ここに記述された文字列をルートパスとして利用します。

 Site Root Path欄が空白の場合この機能は働きません。

 Site Root Pathの文字の前の□は普段背景色ですが、「/」で始まるURLがキャプチャされた時青色に変化します。

チェックボックス『SelfReferer』:

 アイテムダウンロード時にサーバーに送るRefererを指定します。親URL或いはアイテムダウンロードURL自身をRefererとして送ることができます。

 ここにチェックを入れた場合、親になるPageURLをRefererとして送ります。

6 ボタン『保存フォルダを開く』:エクスプローラーで開く

 このボタンをクリックすると、保存フォルダ欄に記述されたフォルダをエクスぷローターで開きます。

7 ボタン『URLリストを開く』:

 ⑭の『Download Items』にチェックされていない時に動作確認のため実際のダウンロードはせず、代わりにダウンロードURLをリスト化して.txtファイルに出力することができます。

 このリストファイルは「URLリストを開く」ボタンをクリックして開くことができます。リストファイルは、⑧保存フォルダ欄に記載されたフォルダに 「⑰の『設定名称』_TargetURL.txt」 として保存されています。

 得られたURLリストが.txtに関連付けされたアプリで開きます

8 ボタン『初期化』:設定をデフォルト初期状態に戻す

 各部の設定を初期状態に戻します。新たなプロジェクトを作成するときに利用します。

 重複回避のハッシュテーブルはクリアされません。

9 ボタン『Open/Close』:アプリ画面の右半分を隠す:

 アプリの右半分の画面を隠し、画面占有面積を半減させるためのボタンです。

 左側基準、右側基準を選択できます。ボタンのチェックボックスがチェックされると右側を基準として右半分が折りたたまれます。チェック無しでは逆に右側基準に右半分が折りたたまれます。

10 ボタン『URLハッシュテーブルの適用』:

 ダウンロードしたURLはハッシュテーブルに記録して重複アクセスを回避することができます。ハッシュテーブルに記録されるURLはアイテムへのリンクが記述されているhtmlのURLになります。

 親URLのhtmlに子になるページのリンクURLが複数記述され、各ページのhtmlに孫となるアイテムのリンクURLが記述されている場合で説明すると、親URLと孫URLはハッシュテーブルに記録されず、子URLが記録されます。これにより、ダウンロード途中で中断して、再びダウンロードをすると、まだダウンロードされていない子URLのダウンロードが実行されることになります。

このボタンをクリックすると重複回避動作が切り替わります。壁をジャンプするアイコンはハッシュテーブルを無視することを意味し既得URLである無しに拘わらずアクセスします。また、URLはハッシュテーブルに記録されません。

 壁に突き当たるアイコンはダウンロードしたURLをハッシュテーブルに記録し、同じURLは2度とアクセスしません。

11 ボタン『URLハッシュテーブルのクリア』:

 URLのハッシュテーブルをクリアします。

12 鍵語の検出:

 正規化パターンで使用する語句を予め調べるための補助機能です。

 キャプチャGroups<Key>で語句を指定する正規化パターンを記述し、TopURL以下のURLに存在する語句とその頻度一覧を作成します。

13 Fileモード・連番URL進捗表示:

 Fileモード或いは連番URLでダウンロードしている時の進捗状況を知るための表示です。

 Fileモード時の書式は n/N で、nはURLリストファイルの順番、NはURLリストに記載されたURLの総数を意味します。

 連番URL時の書式は m/M でmは実行中の連番番号、Mは連番最終番号を意味します。

 Fileモードで連番URLの場合は n/N-m/M とFileモードの進捗が先に表示されます、この時欄をはみ出すこともありますが、マウスカーソルをこの欄に重ねるとバルーンが開き全容が表示されます。

14 ボタン『最前面表示』:

 アプリ画面を常に最前面に表示することができます。最前面表示の時は、ボタン背景が薄緑色に変わります。

15 ボタン『フォントの変更』:

 フォントボタンでアプリ画面のフォントを変更することができます。

16 アクセス、ダウンロード数表示:

 生成したフォルダとダウンロードしたアイテムの数をリアルタイムに表示します。

17 ボタン『プロジェクト設定の保存と読み込み』:

 プロジェクトごとに設定を保存し、設定を読み込むことができます。

 ファイル名はデフォルトで ⑱の『設定の名称』.txt になります。別の名前での保存もできます。

 ボタンをクリックするとファイルブラウザが開くので目的のファイルを選択します。

18 ボタン『プロジェクト設定メモを開く』:

 プロジェクトファイルには設定メモも一緒に保存することができます。

 メモアイコン(鉛筆なし)をクリックすると設定の備忘録が開きます。この画面で編集も行えます。

19 ボタン『PageURLヒント』:

 PageURL、ItemURLをキャプチャする時の本アプリ特有の書式などのワンポイント説明アプレットが開きます。

20 インジケータ:

 現在の階層、ダウンロードバッファとダウンロードチャンネルをリアルタイムに表示します

21 ダウンロードチャンネル数切り替え

 Ver2.0よりダウンロードチャンネルを倍増。ここをクリックして8/16チャンネルの切り替えができます。クリックするとサイクリックに切り替わり、16チャンネルを選択すると文字色が赤、8チャンネルで黒になります。

 ダウンロード動作中の切り替えもできますが、切り替わるまでにタイムラグが発生します。クリックが受け付けられると文字色が変わり、チャンネル数が切り替わると数字が変わります。ダウンロード中のクリックが受け付けられない時もありますので文字色の変化を確認します。

 16チャネルでダウンロードしていて、20のBufが空のままでしたら8チャンネルで十分です。ネット負荷を考慮しながらご利用ください。

22 おまけ機能:ダウンロードjpg破損ファイルをリスト化

 jpgファイルに限ったおまけ機能です。サイトによっては破損したファイルがダウンロードされます。検出可能な破損ファイルをリスト化します。破損が検出された時には jpg の文字が赤に変わります。

 破損リストは親フォルダに 「CrushedFile.txt」 のファイル名でファイルパスが保存されます。

 

3.TopURL

 本アプリではダウンロードの起点となるURLをTopURLと呼称します。この欄にダウンロードするサイトのURL(TopURL)を記入します。Copy&PasteまたはDrag&Dropで入力します。

 本アプリではURLの階層を管理していますが、このTopURLは第0階層のURLになります。

 ダウンロードするURLを直接記入するのが一般的な使い方ですが、Fileモードと連番URLにより連続して複数のURLのダウンロードが可能です。Fileモードの使い方は7章をご覧ください。

 『Clip』にチェックがある時にはURL文字列をクリップボードにコピーすると入力できます。この時はダウンロードが自動的に開始しますので、種々の設定を済ませておいてください。

 また、TopURL欄には、連番URLを指定する書式が用意されています。連番URLとは、URLの最下層レベルの記述に数字を含みその数字が連番になっているようなサイトのURLを指します。

 例 http://xxx/1.html ~ http://xxx/9.html

 表示行数が4行を超える時に欄をクリックすると欄が下方に拡大されます。元に戻すには欄をダブルクリックするか、右クリックしてメニュー選択で閉じます。

(1)連番URLの指定

・TopURLの先頭に{ }で括った最終番号を記述します

 http://www.world.japan/tokyo/123.html このURLが連番で789.htmlまで連続しているとします。

 連番の先頭番号が123、末尾番号が789 で末尾番号を{ }で括ってURLの先頭に記述します。

 {789}http://www.world.japan/tokyo/123.html

 このように記述した文字列を本アプリでは連番URLと呼称しています。この連番URLをTopURLに記入すると、123から始めて、789 になるまで1つずつ順送り(±)してダウンロードすることができます。

 末尾の789からダウンロードする場合は、

 {123}http://www.world.japan/tokyo/789.html と記述します、この場合789から順に遡って123までダウンロードします。

・URLの中に数字部位が2か所以上ある時は、正規化パターンを使って連番数字部位を指定します

 先頭の{ }内を|で区切って後ろに()を3個並べます。 {123|()()()} のようになります。

 http://www.world.japan/tokyo2020/123.html を789まで連番で指定する場合の連番URLは、

 {789|(2020/)(\d+)(\.html)}http://www.world.japan/tokyo2020/123.html のように記述します

 正規化パターンは3組の( )の中に記述します。真ん中の( )に連番URLの数字部分を \d+ のように記述します。前後の( )には連番数字部分を識別するための文字列を記述します、ここは平文でも正規化表現でも使えます。

 ※3つの( )( )( ) は省略できません。3番目の( )内は省略できますが、1、2番目の()内は省略できません。

・正規化パターンを使った連番URLが記述されると欄左上の「Download TopURL」の背景色が変わります

 「Download TopURL」表記をクリックすると、記述したパターンが正しければTopURLの連番数字が反転表示されます。

 反転表示されない場合、パターンに誤りがありますので見直しが必要です。

(2)ダウンロード中のPageURLの表示

 TopURL欄にはダウンロード中、アクセスしているPageURLが表示されます。

 全てのダウンロードが終了すると最初のTopURLの表示に戻ります。

(3)クリップボードからTopURLを入力 

 TopURL欄上の『Clip』にチェックすると、クリップボードにURLがコピーされるとそのURLがTopURL欄に入力されます。

 それと同時にダウンロードが開始します(開始ボタンのクリックと同等)、各種設定はその前に済ませておきます。

 

4.PageURL

 この欄にTopURLのhtmlに記述されたリンクページのURLをキャプチャするための正規化パターンを記述します。 本アプリではこのリンクページのURLをPageURLと呼称します。ダウンロードでは、TopURLにアクセスしてhtmlをダウンロードし、それに正規化パターンを用いてPageURLをキャプチャします。

 ここで初めてキャプチャされたURLは第1階層のURLになります。一つ以上の第1階層のURLがキャプチャされると順番に一つずつアクセスしてhtmlをダウンロードします。そのhtmlに再び正規化パターンを用いてキャプチャされるURLが第2階層のURLになります。指定階層より1階層浅いPageURLがキャプチャされるとそれより深い階層のPageURLはキャプチャされくなります。PageURLのキャプチャが指定階層-1に達するまで、あるいはキャプチャできなくなるまで続きます。

 欄に複数の正規化パターンが記述されている場合、上から順に用いられます。1つのPageURL正規化パターンに対するPageURLのキャプチャまたは、1つのIteURL正規化パターンに対するアイテムダウンロードが終了するとそれぞれ次のパターンに移って同じ動作を繰り返します。

 何も指定しないと正規化パターンは全階層で用いられますが、正規化パターンの前に数字を付記することで用いられる階層を指定することができます。動作中の階層が階層指定に一致する場合のみその正規化パターンが用いられます。

 この欄の表示行数が4行を超える時に欄をクリックすると欄が下方に拡大されます。元に戻すには欄をダブルクリックするか、右クリックしてメニューから選択します。

 『PageURLを抽出』のチェックの有無で動作が異なります。

(1)『PageURLを抽出』にチェックが無い時:お仕着せ正規化パターンを使う

 この場合②の「PageURL」欄は使用せず、以下のお仕着せ正規化パターンが自動的に適用されます。

 htmlの記述の中でhref=で導かれるURLが対象になりますが、拡張子に関係なくすべてのURLをカバーするか、末尾がhtm(l)のURLのみをカバーするかの選択ができます。

 『htm(l)のみを追う』にチェックがある場合、末尾が.htm 或いは html のリンクURLだけを抽出します。

 参考:お仕着せパターン    href=(?<quote>["']*)(?<URL>[^"'>]+?\.htm.*?)\<quote>

 『htm(l)のみを追う』にチェックが無い場合、全てのリンクURLが対象となります。htmlのみの時に比べるとアクセス件数が増え時間がかかります。

 参考:お仕着せパターン    href=(?<quote>["']*)(?<URL>[^"'>]+?)\<quote> 

 お仕着せ正規化パターンでキャプチャできない時、必要に応じて次の(2)の方法で正規化パターンを指定してください。

(2)『PageURLを抽出』がチェックされている時:正規化パターンを記述する

 ②の「PageURL」欄に正規化パターンを記述し、htmlに適用してPageURLをキャプチャします。

 「PageURL」欄には「エンターキー」で区切って複数の正規化パターンを記述することができます。

 また、正規化パターンを作成するための補助機能が用意されています。

 パターンは、この欄で直接編集することができます。(補助機能でも編集することができます)

 複数のパターンがある時、欄右にある▼をクリックするとパターンが順送りで反転表示されます。

(3)PageURLの正規化パターンを適用する階層を指定する

 ②「PageURL」欄の正規化パターンの先頭に1桁、あるいは2桁の数字をつけて適用する階層を指定できます。この指定の無い正規化パターンは全階層に適用されます。

 数字は0から9の1桁か2桁で、- を併用し以下のように記述します。

     1  階層1のみに適用

     -2 階層2まで(0~2)で適用

     3- 階層3以降で適用

     46 階層4から6で適用

     数字記述無しは全階層で適用

 階層指定以外の数字を正規化パターンの先頭に付記することはできません。階層指定を保証するため、先頭数字は全て階層指定と見なされます。

(4)正規化パターンで文字列の抽出(キャプチャ):

 決められたGroups名、正規化パターン、階層指定に基づいてURLをキャプチャします。

 <URL>Groups でキャプチャした文字列がPageURLとなります。PageURLがフルパスでない時は、階層、パス規則に従いフルパスのPageURLに変換します。

 <String>Groups でキャプチャした文字列をPageURLキャプチャの判定に用います。<String>Gropusでキャプチャした文字列に指定の語句を含む時、そのパターンでキャプチャできる文字列をPageURLとすることができます。特定の語句とは⑨のKey_Word欄に記述される語句です。→String with KeyWord

 <Child>Groups でキャプチャした文字列をフォルダ名に使ってChildフォルダを生成します。

 <Key>Groups でキャプチャした文字列の種類とその頻度を取得します。TopURLのhtmlの中でどのような語句が使われているかを調べるための補助機能です。

 また、キャプチャした文字列の先頭に 「?」 が付いていた場合、それをクエリ文字列と判断し現在アクセスしているURLの末尾に付加してクエリ付URLとして抽出しています。

(5)Replace:抽出文字列の置換

 1の『Replace』にチェックをすると正規化パターンで抽出した文字列に対して置換を施すことができます。置換は既定のオプション設定で、Regex.Replace メソッド(Input,Pattern,MatchEvaluator) を用いて置換します。

 デフォルトで次の置換パターン例が記述されています。 ^(.+?)$ → ../../$&

 この例では、抽出された文字列がメソッドの Input、^(.+?)$ がPattern、../../$& がMatchEvaluatoになります。

 この例の所作は、PageURL正規化パターンでキャプチャした文字列全体の先頭に ../../ を付加します。

 置換対象文字列、置換文字列のパターン指定方法は、.NET Framework の正規表現の置換に準拠します。詳細は「Microsoftの.NET Framework の正規表現」を参照してください。

(6)『String with KeyWord』でPageURLを選別

 キャプチャGroups<String>でキャプチャした文字列の中に⑨のKeyWord欄の語句が含まれている時だけURLを抽出することができます。

 (1)PageURL欄の上にある⑩『String with KeyWord』にチェックを入れてこの機能をOnにします。

 (2)PageURLの正規化パターンの中にGroups名 <String> で文字列を指定するパターンを埋め込みます。

  一般的に<a>タグに挟まれる文字列を指定するのが手軽です。

  <a href="http://www.world.japan/tokyo.html">osaka</a>  の場合

  <a\shref="(?<URL>.+?\.html)">(?<String>.+?)</a>  のようなパターンを指定します。

 ※<URL>と<String>は上の例のように、同じパターン内で記述されていなければなりません。

 (3)アプリ画面左側にある⑨KeyWord欄にKeyWordを記述します。

 (4)KeyWord欄には平文でKeyWordをそのまま書くこともできますが、( )で括ってその中に正規化パターンを記述することもできます。正規化パターンが適用されるのはTopURLの文字列lで、ダウンロード開始時にKeyWordをキャプチャします。KeyWord欄はキャプチャされた語句に書き変わります。

  ( )内に記述される正規化パターンにはキャプチャGroupsは使いません。

 以上の設定で <String>Groups でキャプチャされた文字列の中に KeyWord を含むURLを選択・抽出します。

 ※<String>Groupsでキャプチャ出来る文字列が無い場合そのURLは抽出されません。

 ※ItemURLにもこの機能があります、使用するKeyWordは共通で個別指定はできません。

(7)取得URLの置換

 正規化パターンで得られたPageURLに対して最終段階で文字列置換を行うことができます。

 2「URL置換」欄が空白の場合にはこの機能は働きません。

 「URL置換」欄が空白でない場合、記入された文字列がURLに含まれている時その文字列を置換します。

 左の欄が置換対象文字列で、右の欄が置換文字列です。置換対象文字列があったら、置換文字列に置き換わります。

(8)URLに使うキーワードの調査

 URLの識別に使用する語句(キーワード)を調べる補助機能です。

 調査結果をパターンのカバー範囲や必要パターンなどの検討に供することを想定しています、ダウンロードには直接関係しない機能です。

 URL抽出パターンに絡めて<Key>のGroups名で正規化パターンをPageURL欄で指定します。

 ボタンをクリックするとパターン調査する旨の表示がありますので「はい」をクリックします。

 TopURLのhtmlを取得し、パターンにマッチする単語(キーワード)とその出現頻度のリストを生成・保存します。

 リストは、(保存フォルダ)に ⑰の『設定名称』_Keyword.txt として保存されます。

 階層深度指定は、指定された階層までアイテムのダウンロードをすることを意味しますが、キーワード調査では、指定された階層までキーワードを調査します。

 具体的には、階層指定が0の場合、TopURLのhtmlを対象にパターンマッチを行いキーワードを調査します。

 階層指定が1以上の場合、PageURLにキャプチャGroups<URL>指定のパターンがあれば指定階層までURLの回帰解析を行い、そこで得られるURLのhtmlを対象にパターンマッチを行います。<URL>指定のパターンが無い場合はTopURLの評価のみで終了します。

 

5.ItemURL 

 この欄にTopURLのhtmlに記述されたアイテムのダウンロードURLをキャプチャするための正規化パターンを記述します。本アプリではアイテムのダウンロードURLをItemURLと呼称し、PageURLと区別しています。ダウンロードでは、TopURLにアクセスしてhtmlをダウンロードし、それに正規化パターンを用いてItemURLをキャプチャします。

 PageURLのキャプチャと同タイミングで実行されますが、現在階層のhtmlから先ずItemURLをキャプチャしアイテムをすべてダウンロードしてからPageURLのキャプチャに進みます。

 階層深度指定で指定される階層は、このアイテムダウンロードが実行される階層を指します。階層深度指定の階層ではPageURLはキャプチャしません。階層指定をする時にこのずれに注意してください。

 複数の正規化パターンがある場合、PageURLと同じように上から順に用いられます。一つの正規化パターンにでキャプチャされたURLのダウンロードが終了して、次の正規化パターンを用いて同じ動作をします。

(1)正規化パターンの記述

 正規化パターンを用いてItemURLを取得するために、③「ItemURL」欄に正規化パターンを記述します。

 「ItemURL」欄には「エンターキー」で区切って複数の正規化パターンを記述することができます。

 この欄に複数の正規化パターンが記述されている場合、上から順に使用されます。一つの正規化パターンに対するItemURLがキャプチャされアイテムダウンロードが終了すると次のパターンに移って同じ動作を繰り返します。

 何も指定しないと正規化パターンは全階層で用いられますが、正規化パターンの前に数字を付記けることで用いられる階層を指定することができます。動作中の階層と一致する場合のみその正規化パターンが用いられます。

 この欄の表示行数が4行を超える時に欄をクリックすると欄が下方に拡大されます。元に戻すには欄をダブルクリックするか、右クリックしてメニューから選択します。

(2)ItemURL正規化パターンを適用する階層を指定する

 「ItemURL」の正規化パターンの先頭に1桁、あるいは2桁の数字をつけて適用する階層を指定できます。

 書式は以下のように、数字は0から9の1桁か2桁で、- を併用します。

     1  階層1のみに適用

     -2 階層1まで(0から2)で適用

     3- 階層3以降で適用

     45 階層4から5で適用

     無指定は全階層で適用

 ※この動作を保証するため、階層指定以外の数字を正規化パターンの先頭に付記することはできません。

 先頭数字は全て階層指定と見なします。

(3)正規化パターンで文字列の抽出(キャプチャ):

 決められたGroups名、正規化パターン、階層指定に基づいてURLをキャプチャします。

 <URL>Groups でキャプチャした文字列がItemURLとなります。ItemURLがフルパスでない時は、階層、パス規則に従いフルパスのItemURLに変換します。

 <String>Groups でキャプチャした文字列をItemURLキャプチャの判定に用います。<String>Gropusでキャプチャした文字列に指定の語句を含む時、そのパターンでキャプチャできる文字列をItemURLとすることができます。特定の語句とは⑨のKey_Word欄に記述される語句です。→String with KeyWord

 <Word>Groups でキャプチャした文字列をItemURLの置換で挿入語句として使います。

 また、キャプチャした文字列の先頭に 「?」 が付いていた場合、それをクエリ文字列と判断し現在アクセスしているURLの末尾に付加してクエリ付URLとして抽出しています。

(4)Replace:抽出文字列の置換

 『Replace』にチェックをすると正規化パターンで抽出した文字列に対して置換を施すことができます。

 置換は既定のオプションで、Regex.Replace メソッド(Input,Pattern,MatchEvaluator) を用いて置換します。

 デフォルトで次の置換パターン例が記入されています。 ^(.+?)$ → ../../$&

 この例で、抽出された文字列が Input、^(.+?)$ がPattern、../../$& がMatchEvaluatoになります。

 その意味は、ItemURLパターンで抽出した文字列全体の先頭に ../../ を付加します。

 置換対象文字列、置換文字列のパターン指定は、.NET Framework の正規表現の置換に準拠します。

(5)『String with KeyWord』でURLを選別

 キャプチャGroups<String>で抽出した文字列の中にKeyWordが含まれている時だけURLを取得することができます。

 (1)ItemURLのの正規化パターンの中にGroups名 <String> で比較する文字列を指定するパターンを埋め込みます。

 一般的には<a>タグに挟まれる文字列を指定するのが手軽で便利です。

  <a href="http://www.world.japan/tokyo.html">osaka</a>    の場合

  <a\shref="(?<URL>.+?\.html)">(?<String>.+?)</a>    のようなパターンを作ります。。

 (2)ItemURL欄の上にある『String with KeyWord』にチェックを入れてこの機能をOnにします。

 (3)アプリ画面左側にあるKeyWord欄にKeyWordを記述します。

 以上の設定で <String> で抽出される文字列の中に KeyWord を含むItemURLが取得できます。

 ※この機能が働くのは、『String with KeyWord』がチェックされ、<String>Groupsの記述があるパターンを用いてURLを抽出する時です。

 ※<String>Groupsで抽出出来る文字列が無い場合もそのURLは取得されません。

 ※PageURLにもこの機能があります、使用するKeyWordは共通で個別指定はできません。

(6)取得URLの置換:<Word>で置換用文字を抽出

 正規化パターンで得られたItemURLに対して最終段階で文字列置換を行うことができます。

 2の「URL置換」欄が空白の場合この機能は働きません、文字列が記入されている場合はURLの文字列を置換します。

 左の欄が置換対象文字列で、右の欄が置換文字列です。ItemURLの中に置換対象文字列があれば、置換文字列に置き換わります。

 ・さらに <Word>Groups でキャプチャした文字列を置換で利用できます

 ItemURLの正規化パターンの中にGroups名<Word>で置換に使用する文字列のキャプチャ正規化パターンを埋め込んでおき、置換に使用する文字列をキャプチャします。

 キャプチャされた文字列をURLの置換で使用するには、 置換対象文字列の文字列指定の中に文字 「※」 を記入しておきます。置換時に※の部分にキャプチャした文字列を代入してURL置換を実行します。

 ・具体的手順を次に示します。

 http://www.world/japan/tokyo/123.jpg のItemURLをキャプチャする場合、通常の正規化パターンを

   (?<URL>.+?\d\.jpg) と記述することができます、

 tokyo の位置にある文字を osaka に変えるため tokyo の部分をキャプチャするパターンを埋め込みます。

   (?<URL>.+?japan/(?<Word>.+?)/\d+\.jpg) 

 これでItamURLをキャプチャしながら、Groups名<Word>で tokyo の部分をキャプチャできます。

 (1)URLの置換文字列指定では tokyo を※で表し置換文字列欄を

    /※/   →   /osaka/  のように記述します。これにより、

    http://www.world/japan/tokyo/123.jpg がキャプチャされた時、そのURLを

    http://www.world/japan/osaka/123.jpg のように置き換えることができます。

 キャプチャされたURLの「tokyo」の位置の文字列が何であれ、「osaka」に置換することを意味します。

 (2)この使い方とは逆に

  /japan/※/  →  /※/japan/  のようにすると、

    http://www.world/japan/tokyo/123.jpg がキャプチャされた時、そのURLを

    http://www.world/tokyo/japan/123.jpg のように置き換えることができます。

 (3)あまり使い道が無いのが

  /japan/tokyo/  →  /※/  のような指定です。左辺は既知の値なので右辺で※を使う意味がありません。

  「※」は置換対象文字列、置換文字列のどちらでも使うことができます。

 

6.アイテム保存のフォルダ:Childフォルダとサブフォルダ

  ダウンロードアイテムは⑧の保存フォルダ欄に記述されたフォルダに保存されます。本アプリではこの欄を書き換えることで保存フォルダを変更し仕分け保存を可能にしています。

 保存フォルダを変更するための手段として、Childフォルダ、Childフォルダ2、Subフォルダが用意されています。このうちSubフォルダは⑧の保存フォルダ欄の表記は変更せず、動的に内部で切り替えられます。

 アイテム保存のフォルダは次のように構成されます。

 <アイテム保存フォルダの構成と優先順位>

  「保存フォルダ」  親フォルダで保存フォルダとして固定的に設定される

  「Childフォルダ」  チェックボックス『Child』で指定するSubフォルダ

  「Childフォルダ2」 <Child>Groupsでキャプチャされるフォルダ名のChildフォルダ

  「Subフォルダ」  チェックボックス『タイトル名Subフォルダ』で指定するSubフォルダ

  優先順位は上から順にこの並びになります。

(1)Childフォルダ

 Childフォルダを利用するには、 チェックボックス『Child』にチェックを入れます。TopURLに対応するChildフォルダを生成し、保存フォルダを変更します。Childフォルダ名の決め方には4通りあります。

 1.チェックボックス.『KeyWord]にチェックをしてKeyWord欄の文字列をChildフォルダ名にします。

   ( )で括った正規化パターンの場合TopURLの文字列からキャプチャします。

 2.「Child」欄に平文でフォルダ名を記述します。

   「Child」欄の記述そのものをChildフォルダ名にします。

 3.「Child」欄に()で括って正規化パターンを記述し、欄右端の『Top』にチェックします。

   TopURLの文字列からキャプチャします。

 4.「Child」欄に()で括って正規化パターンを記述し、欄右端の『Top』のチェックは外します。

   TopURLから得られるhtmlからキャプチャします。

 ( )で括った正規化パターンが記述される場合、TopURLのダウンロード開始時にTopURL文字列やhtmlに用いられフォルダ名がキャプチャされ、⑧保存フォルダ欄にChildフォルダの表記が追加されます。

 TopURLのダウンロードが終了するまでその保存フォルダパスは保持され、ダウンロードしたアイテムはそのフォルダに保存されます。連番URLやFileモードでは、1,3,4の設定でTopURLが変わるたびに新たなChildフォルダに更新されます。

 1,3,4の正規化パターンでフォルダ名がキャプチャできない時フォルダ名が得られず保存フォルダは変わりません。

 ※Fileモードには、「Child=」というファイルコマンドが用意されており、これを使ってここで述べたChildフォルダ設定レベルと同等の保存フォルダを設定することができます。

 ・Childフォルダ2の指定

 Childフォルダ2はPageURLとしてキャプチャしたURLに対して発生させるChildフォルダで先のChildフォルダと区別するためChildフォルダ2と呼びます。Childフォルダ2は動的に生成されるもので、PageURLをキャプチャする正規化パターンの中にキャプチャGroups名 <Child>を使ってフォルダ名をキャプチャする正規化パターンを埋め込みます。

 Childフォルダ2のフォルダ名がキャプチャされるとフォルダ欄の表記にChildフォルダ2の表記が追加されます。

 Childフォルダ2をキャプチャしたURLにリンクされたアイテム及び下の階層へのリンクに連なるアイテムは全てChildフォルダ2に保存されるようになります。該URLの一連のダウンロードが完了するとChildフォルダ2は解除されます。この時、保存フォルダ欄からChildフォルダ2の表記が消えます。

 ChildフォルダとChildフォルダ2の指定が重なる時は、Childフォルダの下にChildフォルダ2が生成されます。

 通常階層指定とともに用いてChildフォルダ2を生成します。階層指定が0の場合には『Child』のチェック指定と競合しますが、『Child』のチェック指定が優先します。その他の階層では『Child』のチェックの影響は受けません。

 Childフォルダ2を指定する正規化パターンは階層指定数字を付記して使うことをお勧めします。階層指定が無く、多階層に渡ってダウンロードする場合、階層が進むたびにChildフォルダが生成され、どんどん深い階層に保存されるようになります。それが意図に反する保存フォルダになる場合、正規化パターン先頭に階層を指定する数字を付記します。他の階層でもそのパターンを使う必要がある時は<Child>の記述が無いパターンを併記し、そちらにもダブらないように階層指定の数字を付記します。

(2)チェックボックス『title名Subフォルダ』

 アイテムをダウンロードするURLごとに保存フォルダを生成する機能です。

 ⑫『title名Subフォルダ』にチェックを入れると、ダウンロードURLのhtmlからtitleを取得し、title名のSubフォルダを生成し保存フォルダを変更することができます。 Subフォルダは、保存フォルダ欄のパスの直下に作成されます。

 これにより、URLごとに保存フォルダを切り替えることができるようになります。

 htmlにtitleの記述が無い場合はSubフォルダ名を得られず保存フォルダ欄のパス直下に保存されることになります。このような時にもSubフォルダを生成したい場合には、⑬のチェックボックス『SubF』 にチェックを入れて補完することがきます。

 この『SubF』機能は、htmlからtileが取得できない時にのみ働き、⑨のKeyWord欄の文字列か、「SubF」欄の平文文字列か、「SubF」欄の( )内に記述された正規化パターンでキャプチャされる文字列、いずれかの文字列を選択してSubフォルダ名とすることができます。

 「SubF」欄の( )内に記述された正規化パターンを用いるhtmlはtitleを取得しようとしたhtmlになります。htmlにtitleがあるのにSubフォルダが使えない場合、内蔵の正規化パターンでtitleをキャプチャできていない可能性があります。この『SubF』でtitleをキャプチャする正規化パターンを記述してください。

(3)Childフォルダ2とSubフォルダの違い

 Subフォルダはダウンロードアイテムの親URLに依存するフォルダで、親URLが変わるとSubフォルダも変わります。

 Childフォルダ2はSubフォルダに似てPageURLに依存するフォルダですが、SubフォルダがURL個々に対応して切り替わるのに対し、Childフォダ2は<Child>でキャプチャされ確定すると、同時にキャプチャされたPageURLとそのURLのリンクURLに対する保存フォルダとなり、そのPageURLのダウンロードが完了するまで保持される点が異なります。

 なお、Childフォルダは、TopURLに依存するフォルダで、PageURLには依存せしません。

 Childフォルダ、Childフォルダ2、Subフォルダの併用は可能です、優先順位に従って階層化されます。

 

7.Fileモード(URLリストで連続ダウンロード)

 複数のTopURLをテキストファイルにまとめ、TopURLとして1URLずつ読みだしてダウンロードする機能です。

 URLリストはTopURLの羅列で、本アプリの連番URLフォーマットで書かれたURLもそのまま使えます。設定ファイルを読み込んで動作途中で設定条件を変更したり、Childフォルダより優先度の高い子フォルダを生成することができます。

 Fileモードのダウンロードは以下の手順で起動します。

 (1)任意の名前のテキストファイルにダウンロードするURLをリストアップします。

 (2)『File Mode』チェックボックスにチェックを入れ、その右のファイルボタンを使って、作ったテキストファイルを選択します。

 (3)保存フォルダの設定をします。(⑧保存フォルダ欄)

 (4)開始ボタンをクリックすると、URLリストからURLを順次読み出し、ダウンロードを実行します。

 13の表示欄に「n/m」の表示が現れます、これはTopURL m個中 n番目のTopURLであることを示します。

 Fileモード時の連番の場合は「n/m-N/M」と4つの数字が表示されます、左がFile Modeの進捗、右が連番URLの進捗を現します。

 保存フォルダの変更:子フォルダの指定コマンド Child=

 上記6.で説明したChildフォルダより優先度の高い子フォルダを生成することができます。6.で説明したフォルダはここで説明する子フォルダの下に生成されます。

 URLリストに特別コマンドが用意されており、リストに Child= に続けて子フォルダ名を記述した1行を追加します。Fileモードの動作する中で、その行を読み込んだ時に保存フォルダに子フォルダが作られます。保存フォルダの表示もそれに合わせて変わります。

 それ以降のダウンロードは指定した子フォルダのある保存フォルダに保存されます。

 その後、再び Child= のコマンドが現れた時は新たな子フォルダが生成されそのフォルダに切り替わります。保存フォルダの表記もそれに合わせて変わります。

 子フォルダ指定を解除するには Child= のみを記述し、子フォルダ名として空白を指定します。 

 Child= は大文字で始まるコマンドで、child= と小文字から始まる場合は無視されます。

 

設定条件の変更(設定ファイルを読み込む)

 File Modeでは各種設定も動的に変更することができます。

 保存されている設定ファイルを読み込むことで設定を変更します。 

 URLリストに設定ファイルをフルパスで記述します。File Modeが動作する中でその行が読み込まれると指定された設定ファイルが読み込まれ設定が変更されます。

 設定ファイルにはFile Modeの指定もありますが、それは無視して他の設定条件が適用されます。

「File」モードのダウンロードを中断するには、「開始ボタン」を2回クリックします。

 ・ダウンロード開始でボタン表示「開始」が「中断」に変わり、背景が黄色になります。

 ・「中断」をクリックすると表示が「抜出」に変わり、現在のTopURLのダウンロードが終わったとき中断します。

 ・すぐに中断したい場合、さらに「抜出」をクリックすると、即座にダウンロードを中断できます。

URLリスト内容の確認

 URLリストの内容を確認するには、ダウンロードしていない状態でShiftキーを押しながらファイルボタンをクリックします。

 普段使用しているテキストエディタが開いて内容の確認・編集を行うことができます。

 

8.重複アクセスの回避:URLハッシュテーブル

 本アプリは正規化パターンの作り方によっては同じURLに複数回アクセスすることもあります。ダウンロード効率が低下するとともに同じアイテムを重複ダウンロードすることにもなります。

 このような現象を回避するためにダウンロードに供したURLをハッシュテーブルに登録し重複を回避できます。

 10のアイコンボタンでハッシュテーブルの適用を切り替えることができます。アイコンボタンはサイクリックに変わります。

 ハッシュテーブルを有効にするにはボタン表示を off (ハッシュテーブル有効)のようにします。この状態でURLの重複をチェックすると共に新たにダウンロードに供したURLを登録します。

 アイコンをクリックして on(ハッシュテーブル無効) の状態にすると重複チェックはせず、新たなURLも登録しなくなります。

 このボタンの隣の「消しゴム」アイコンボタンでハッシュテーブルをクリアすることができます。肥大していると思われる時にはここをクリックします。

 

9.正規化パターン作成:作成条件設定

 本アプリの肝となる正規化パターンを作成するための補助機能を備えています。 この機能は、ターゲットの拡張子などの特徴的文字列を含む全てのタグをピックアップし、それらタグの文字列を元に正規化パターンを作成するための機能です。⑰のRegex Pattern作成ボタンをクリックして呼び出します。

 この機能を呼び出す前に、TopURL欄に対象となるURLを記入しておきます。このURLから得られるhtmlを分析して正規化パターンを作成します。

・パターン作成機能を呼び出す前に、これから作成するパターンの帰属先を指定します。

 正規化パターンを使う欄が全部で5か所あります。補助機能で作成したパターンを収容するためにこの機能を呼び出す前に帰属先をクリックしておきます。 クリックされた欄がパターンの帰属先となります。(PageURL欄、ItemURL欄、Childフォルダ欄、Subフォルダ欄、KeyWord欄、Replace欄)

 作成したパターンはこの帰属先に収容されます。関係ない欄をクリックした場合、PageURL欄が帰属先になります。

 TopURLとItemURLのReplace欄のパターンはそれぞれPageURLかItemURLとペアで扱われ個別に作成することはありません。PageURLやItemURLのパターン作成画面で『パターン照合』をしてパターンマッチした時に『Replace』ボタンをクリックするとReplace欄のパターンを作成する画面が開きます。

 TopURL欄に対象となるURLを記入し、作成パターンの帰属先をクリックしてから、⑯のRegex Pattern作成ボタンをクリックすると次の画面が開きます。

 KeyWord欄とChildフォルダ欄でTopURL文字列が対象の時はhtmlからタグをピックアップする必要が無いので直接作成画面が開きます。

 この画面では、htmlの中からパターン作成に必要なタグのピックアップ条件を設定します。

OpenPat GenStart Extensions Tag CharacterNumber Transfer

・ウィンドが開いたら、まず拡張子/KeyWordを指定します。

 htmlの中から抽出したいURLを特徴づけるKeyWordを指定します。KeyWordの指定が無いと作成機能は終了します。

 例えばjpeg画像を拾うURLのパターンを作る場合、KeyWordとして「.jpg」 を指定すると.jpgを含む全タグをピックアップできます。

 KeyWordは2語まで使用でき、語の区切りには半角スペースを用います。2語を使ってAND検索するか、OR検索するかを指定するため語間にAND/ORを記述します。ANDの場合は省略可能です。

 例: .jpg AND ^src= ( .jpg ^src= ) は.jpg を含みsrc=を含まないタグをピックアップします。

 AND検索時は、2語目の先頭に^を付記して1語目を含み、2語目を含まない検索をさせることもできます。但し、OR時には^(Not)は使えません。

 作成画面が開く前にhtmlをダウンロードし、KeyWord(例では .jpg )の条件を満たす全てのタグをピックアップし、作成画面にリストアップします。  <xxxx.jpgxxxx> x:任意文字 のようなタグを全部ピックアップします。

 KeyWord欄は入力した語句を10組まで記憶しており、再利用ができます。この履歴欄やチェックボックス条件は、PgeURL欄、ItemURL欄、Childフォルダ欄、Subフォルダ欄、KeyWord欄それぞれが独立して扱われ記憶されます。

 なお、KeyWordの先頭にピリオドを付けるとパターン作成時にそれを拡張子として利用します。具体的には作成するパターンは必ずその拡張子を含んだものになります。 

・「KeyWordを含む<>の後方の<>を1つ取り込む」にチェックを入れると、

 ピックアップする範囲を後方に拡大し、タグを2つピックアップするようになります。

 <a href="xxxx.html">○○○○○</a> のように二つのタグを持つ文字列をピックアップするのに適しています。

・「KeyWordの前後文字数を指定して取り込む」にチェックを入れると、 

 KeyWordに2語指定されている場合、基準になるKeyWordは1番目のKeyWordです。

 KeyWordの前方文字数と後方文字数の指定に従い文字列をピックアップします。

 KeyWordに.htmlを指定する場合、・・・前方文字・・・.html・・・後方文字・・・ のように、改行を含まない範囲で指定文字数の文字列をピックアップします。

 上記「KeyWordを含む<>の後方の<>を1つ取り込む」と両方にチェックを入れた場合、「KeyWordの前後文字数を指定して取り込む」の方が優先されます。 

・「作成画面に転送する時、階層指定の数字は転送しない」にチェックを入れると

 PageURL,ItemURL欄の正規化パターンに付記された階層指定の数字が転送されなくなります。

 以上の条件設定をして「OK」ボタンをクリックすると、「正規表現の作成画面」が開き、ピックアップされたタグのリストが表示されます。

10.正規化パターン作成

 htmlからタグをピックアップする条件設定が終わると、設定に応じたタグがピックアップされ次のようなパターン作成画面が開きます。

PatternGen PatReplace PreWrite Prewrite PatternMatch Finish RegexApli Control

 各部の説明の前に、パターン作成の流れを説明しておきます。

 ①のタグリストには設定されたKeyWordを含むタグがピックアップされます。

 ④検索語欄に検索語を入力して「キーワード検索ボタン」をクリックすると該当するタグが反転表示されます。検索ボタンをクリックすると次の検索を行います。(一致したタグは選択タグ欄に表示されます)

 タグリストの中から求めるURLを含む行をクリックして②選択タグ欄に表示させます。

 ②選択タグに表示された文字列のURLの部分を反転させて⑤Patern下書きボタンをクリックすると、<URL>Groupsで反転部分をキャプチャするパターンが生成され③正規化パターン欄に表示されます。

 この時条件設定画面のKeyWord欄で先頭にピリオドの付いた語句を指定した場合、パターンの中にそれを拡張子として含む形のパターンになります。

 <URL>以外のGroups<String>、<Child>、<Word>、<Key>の正規化パターンは個別に作成しパターンに埋め込みます。

(1)画面構成

 作成画面には3つのテキストボックスとキーワード検索テキストボックスがあります。

①タグリスト

 KeyWordを指定してピックアップしたタグが全て表示されます。表示は折り返しをしないのではみ出すこともあります。

②選択タグ   

 タグリスト欄の中の1行をクリックすると、その行全体がこの選択タグ欄に表示されます、ここでは折り返して全体が表示されます。

 ここに表示されている文字列が全てパターンに取り込まれます。不要な部分は予め削除しておきます。

正規化パターン 

 正規化パターンが表示されます。メイン画面でパターンの帰属先を指定してからここに至りますが、帰属先に正規化パターンが記述されていた場合、ここにコピーされます。

 階層指定番号の扱いは作成条件設定画面で指定できます。

 複数のパターンが表示された場合、パターン送りボタンをクリックしてを選択します、選択されたパターンは反転表示されます。

④キーワード検索テキストボックス 

 ここに記述したキーワード(検索語)でタグリストを検索し、検索語を含むタグがあれば該当するタグを反転表示します。

 同時に選択タグにそのタグを表示します。

 「キーワード検索」ボタンで検索を開始します。

パターン送りボタン

 正規化パターンを選択します。

パターン下書きボタン

 選択タグ欄に表示された文字列のURLとしてキャプチャする部分を反転させ多状態でこのボタンをクリックすると、反転部分をキャプチャGroups<URL>として正規化パターンを生成します。

 反転していない部分は原則正規化されずそのままパターンに含まれます。但し、エスケープ文字とダブルクォーテーションに括られた文字列は正規化しています。多くの場合この部分は後に修正が必要にることが多々あります。

 作成条件設定画面でピリオド付き拡張子を指定した場合、正規化パターンにその拡張子が自動的に組み込まれます。

Replaceボタン

 キャプチャGroups<URL>の抽出結果を直接置換する正規化パターンを作成・確認するための画面が開きます。

 PageURLかItemURLの作成時に、パターン照合を実行してパターンマッチした時のみ有効になります。

 <URL>以外のキャプチャGroupsの抽出結果には対応しません。

 詳細は(3)で説明します。

パターン照合ボタン

 作成した正規化パターンでタグリストを対象にパターンマッチを実行します。

 パターンマッチしたらその行で止まり、選択タグにタグ全体が表示され、選択タグ欄の背景が薄黄色に変わり、パターンマッチした部分が反転表示されます。

⑨「探制御文字」ボタン

  改行などの制御文字は表示されませんので、改行を含む選択タグの文字列をそのまま正規化パターンに利用した場合、改行部分が正しくパターン化されずキャプチャできないことがあります。

 このボタンで選択タグの文字列に含まれる制御文字を調べ制御文字が含まれている時、その前後の文字が反転表示されます。文字コードを知るには次の16進表示を使います。その上でパターンに組み込めば正しくキャプチャできるようになります。

⑩「↑反転部文字列の16進Code表示」ボタン

 選択タグの文字列を反転表示させ「探制御文字」ボタンをクリックすると、反転表示された文字列の16進文字コードを表示して制御文字のコードを確認することができます。

終了ボタン

 得られた正規化パターンを帰属先に転送して作成機能を終了します。③の正規化パターン欄の内容が全て帰属先に転送されます。

キャンセルボタン

 全ての変更が破棄され、帰属先への転送もせずに作成機能を終了します。

 ウィンドの[X]をクリックして終了する時も全ての変更が破棄され、帰属先への転送もありません。

⑬外部詳細分析 

 パターン作成を外部アプリで行うためのボタンです。本アプリは正規化表現ツールのRegex7を同梱しています。外部アプリにはデフォルトでRegex7が設定されています。

 外部アプリの起動時の引数として第1引数に分析中のWebページのURLが、第2引数に選択されている正規化パターンが渡されます。Regex7外のアプリを利用するにはこの引数に対応している必要があります。

 RegEx7 は、本アプリのパターン作成よりきめ細かい作成ができ、パターンの読み解き機能などを備えています。

 Regex7の作成パターンを受け渡しする機能は儲けていませんのでクリップボードなどでコピーしてください。

⑭外部Apli登録ボタン

 デフォルトでRegex7が登録されていますが、他のアプリを使う場合、外部アプリのファイルパスを指定・登録します。

 

(2)パターン下書きとパターンチェック

・次の手順でパターンを作成します。

 1.タグリストから1行選び選択タグに表示させます。

 目的の文字列を探すには、キーワード検索テキストボックスにキーワードを記述して「キーワード検索」をクリックします。

 タグリストを検索し検索語を含むタグがあれば選択タグに表示されます。

 2.選択タグの文字列の不要な部分を削除し、URLとしてキャプチャする文字列を反転表示させて、「Pattern下書き」ボタンをクリックします。

 3.反転部分を<URL>のGroups名を使い、(?<URL>[^"’>]+?) のパターンを生成します。

 ( <URL>に続くパターンはURLがタグの中に含まれ、且つ引用符(”か’)に挟まれているのを前提にしたパターンです。引用符が無いケースもありますのでその場合は書き換えが必要です。)

  非反転部分は平文ですが、エスケープ文字には¥を付加し、引用符で囲まれた文字列は [^"].+ に置換してパターンに組み込みます。

 作成条件設定画面で先頭にピリオドのあるKeyWordを指定した場合、それを拡張子としてキャプチャGroups<URL>の末尾に自動的に付記され、(?<URL>[^"’>]+?\.jpg) のようになります。

 但し、反転した文字列の末尾に拡張子がある場合は、その拡張子が優先されます。識別する拡張子はピリオド含め4文字です。.html と .jpeg はピリオド含め5文字ですが例外的に対応しています。

 下書きで得られたパターンの平文部分には無駄や不要部分があります、また抽出部分は正規化規則に従って変換しただけなので最適化が必要になる場合があります。正規化パターンの編集は正規化パターン欄で行います。

・正規化パターンの選択

 作成画面が開いた時、パターンは選択されておらず、送りボタンには■が表示されています。

 パターンが選択されていない状態で「パターン照合」ボタンをクリックすると、全パターンを用いたパターンマッチが実行されます。

 ボタン表示が■の時にボタンをクリックすると▼に変わり、先頭のパターンが選択された状態になります。但し、パターンマッチして選択タグ欄が薄黄色表示の時は、パターンマッチしたパターンが選択された状態になります。

 ▼の表示の時にクリックすると次のパターンを選択することができます。選択タグ欄が薄黄色表示の時は、パターンマッチ状態がクリアされ、選択タグの背景色が元に戻ります。

 更に最後のパターンが選択されている時クリックすると表示位置は先頭に戻り、何も選択されていない状態になりボタン表示が■に変わります。この状態で『パターン照合」をクリックすると全パターンを用いたパターンマッチになります。

・作成した正規化パターンを確認するには

 タグリストに登録されたタグに正規化パターンを用いてパターンマッチを実行し作成したパターンの妥当性を確認することができます。

 パターンが選択されていない状態で「パターン照合」ボタンをクリックすると、登録されているパターンを上から順に用いてパターンマッチを実行します。

 パターンが選択されている状態ではそのパターンでパターンマッチを実行します。

・Group送りボタン

 パターンマッチした場合、選択タグ欄背景が薄黄色に変わり、選択タグにはパターンマッチしたタグ全体が表示され、パターンマッチした部分が反転表示されます。 同時に「探制御文字」ボタンの表記が「Group送り」に変わります。

 反転表示される部分は、指定したパターンに一致する文字列全体になります。「Group送り」ボタンをクリックするとキャプチャGroupsで定義されたパターンに一致する部分文字列が反転表示されます。

 <Word>などのGroupsでキャプチャされた文字列が複数存在する場合アプレットが開き「確認するのは『位置』ではなく『語句』」であることを通知します。反転される文字列は先頭に近い位置にある『語句』です。

 「Group送り」をクリックするたびに、文字列全体 → 部分文字列 → 文字列全体 のように切り替わります。もし、キャプチャGroupsが複数ある場合は部分文字列が1つずつ順に反転表示されます。

 パターンマッチしなかった場合は、中段背景色、中段文字列には変化がありません。

・転送された正規化パターンの階層指定数字

 パターンに階層指定数字が付いた状態でもパターンマッチでは数階層指定数字部分は無視します。

 この作成画面に移行するときに作成設定画面で階層指定なしの状態にすることもできます。

(3)「Replace」ボタン

 ここで、抽出結果のReplaceに使うパターンを作成・確認します。

 PageURL、ItemURLの正規化パターンのGroups名<URL>でキャプチャした結果のみが対象になります。

 「パターン照合」ボタンでパターンマッチを実行し、パターンがマッチして選択タグ欄背景色が薄黄色になると「Replace」ボタンが有効になるのでこれをクリックします。

 <URL>Groupsでキャプチャされた文字列を対象に、2行の表示枠と「Again」ボタンを持つ青色背景の小窓が開きます。

 上段は置換対象文字列パターン、下段が置換文字列パターンを示し、左が置換用の正規化パターン、右が対応する文字列を示します。

 左の正規化パターンにはPageURL、ItemURLいずれかのReplace欄に記載されたパターンが表示され、

 右上段には<URL>で抽出された文字列が表示され、左の正規化パターンに該当する部位が反転表示されます。

 置換条件が成立していると右下段には置換結果が表示され、不成立の場合は右上段と同じ文字列が表示されます。

Replace

 表示内容に手を入れて、Replaceのための正規化パターンを得る手順は以下のようになります。

 (1)上段の正規化パターンには、置換対象文字列を抽出する正規化パターンを記述します。

 (2)下段の正規化パターンには、置換文字列の文字列あるいは置換の正規表現を記述します。

 (3)「Again]ボタンをクリックすると、置換結果が右下段に表示されます。

   置換の動作としては、(1)の正規化パターンで抽出された文字列が(2)の文字列に置換されます。

   該当する置換が行われなければ右下段の表示は右上段と変わりません。

 (4)「Close」か「Replace」ボタンをクリックしてこの窓を閉じます。

 この一連の操作で、抽出結果の置換のための正規化パターンを作成します。この機能はPageURL、ItemURL作成の一部の機能として扱われます。

 「-終了-」で終了すると、その変更内容はReplace欄に反映されます。「キャンセル」で終了すると破棄されます。

 ※ここで対象となる元の文字列は抽出された文字列で、中段に表示される文字列全体ではありません。 

(4)正規化パターン作成の終了

 パターンが完成したら「-終了-」ボタンをクリックします。

 正規化パターン作成条件設定に入る前にパターンの帰属先を決めています。終了ボタンをクリックするとパターンが全て帰属先に転送され、帰属先の内容が更新されます。

 『キャンセル』で終了すると、編集内容は全て破棄されます。

 

11.その他の機能

(1)Site Root Pathの指定

 htmlにはサイトルートパスを使って記述されたものがあります。この場合、キャプチャして得られるURLはフルパスではないためサイトルートパスを付加する必要があります。

 htmlにはサイトルートパスの記述はないので、そのままではダウンロードするURLを取得できません。

 ・本アプリでは2つの方法でサイトルートを想定しています。

 TopURLのhtmlからキャプチャされたURLが /xxxxx/yyyyy/zzz.html の場合、

 (1)先頭の xxxxx と同じ文字列がTopURLの表記中にあれば、TopURLの /xxxxx/ の前までをサイトルートとします。

 (2)先頭の xxxxx に該当する文字列が無かったら、TopURLの先頭から3つ目の/の前までを暫定サイトルートとします。

   ( http://www.world/japan/tokyo.html なら http://www.world )

 運悪くダウンロードできない時にはあらためてサイトルートを設定しなくてはなりません。

 ・Site Root Pathの文字の前の□は普段背景色ですが、「/」で始まるURLがキャプチャされた時青色に変化しますので、四角が青に変わってダウンロードができない場合、サイトルートパスが原因と推測出来ます。

 ・htmlの記述とブラウザに表示されるURLからルートサイトパスを推測して「SiteRoot」欄に記述します。サイトルートを指定しない時にはこの欄は必ず空欄にしておきます。

(2)htmlエンコーディングキャラクターセットの指定

Character

 設定名称指定欄の右の▼でhtmlのエンコーディングキャラクタセットを指定します。

 通常はAutoにしておけば自動的に切り替わりますが、ここで意図的にエンコーディングキャラクタセットを指定することができます。

 ここで指定したキャラクタセットとhtmlの’Charset’指定が一致しなくてもこの指定は切り替わらず、指定のキャラクタセットでエンコーディングしますので、htmlが正しく読み取れないことがあります。

 通常Autoにしておきます。

 

(3)フォントの変更 

 フォントはデフォルトで MS UI Gothic が設定されています。

 PCに内蔵されているフォントから選択して変更することができます。フォントによってはみ出しなどが起きる可能性もありますので、差し支えない範囲でお好みのフォントを選んでお使いください。なお、文字サイズは変更できません。

 TopURL欄、PageURL欄、ItemURL欄及びReplceに使うパターン欄はそれ以外の表示とは別扱いになっています。プロポーショナルフォントと等幅フォントを使い分けられるようにしました。

 フォント変更ボタンでフォントを変更すると最後にTopURL欄なども変更するかと尋ねてきます。そこで「はい」をクリックすると同じフォントが設定されます。

 TopURL欄などパターン欄のフォントは欄を右クリックして、メニューの「テキスト欄のフォントを変更する」で変更します。

 TopURL欄などは編集するときに等幅フォントにすると幅が広がり折り返しが発生する可能性が高くなりますが、作業性が向上します。

(5)インジケータ 

 動作状態を示すインジケータです。Layer以外は、それぞれの最大数に対する残量/使用量がバーで表示されます。

 Layer は、現在アクセスしているTopURLに対する階層を示します。TopURLが階層 0 でアクセスされます、そこにリンクされたURLは階層1以降でアクセスされます。TopURLに記述されたたアイテムのURLは階層0でダウンロードされます。

 URL は、取得したURLの未処理残数を示します。URLの最大数はサイトによって異なります。

 Buf は、バッファに格納されたダウンロードURLの残量を示します。バッファは最大 50 URLです。

 Ch は、ダウンロード中のチャンネル数を示します。チャンネル数は最大 8 チャンネルです。

(6)Refererの選択

 通常はチェックを外して、親URLをRefererとして送出すればダウンロードできますが、htmlの構造で親URLとは関係ないサイトのアイテムをダウンロードすることもあります。

 このような時、サイトによってはダウンロードがキャンセルされることがあります。アイテムが思うようにダウンロード出来ない時に、Self Refererにチェックを入れるとダウンロードアイテムのURLをRefererとして送出するようになり、ダウンロード出来ることがあります。ダウンロード状況に応じて設定します。

(7)TopURL欄などのURL欄の右クリック

 フォント変更メニューとカット、コピー、貼り付けのメニューが開きます。

 

12.具体的な使い方

 Bathtubの操作画面だけで使い方を連想するのは難しいので、次のようなサンプルhtmlを想定して具体的な使い方を説明します。

・TopURLのhtml 

URLは http://www.japan/tokyo/bathtub.html で、titleは、BathTub とします。

     :そのhtmlには次のような記述が含まれているとします。

<a href="http://www.japan/tokyo/abc.html">abcページへ</a>

<a href="http://www.japan/tokyo/xyz1.png">サンプルpng画像1-1</a>

<a href="http://www.japan/tokyo/xyz2.png">サンプルpng画像1-2</a>

     :

・リンク先 abc.html のhtml

URLは http://www.japan/tokyo/abc.html で、titleは、ABC とします。

     :そのhtmlには次のような記述が含まれているとします。

<a href="http://www.japan/tokyo/efg.html>efgページへ</a>

<a href="http://www.japan/tokyo/jkl1.jpg">サンプルlpg画像2-1</a>

<a href="http://www.japan/tokyo/jkl2.jpg">サンプルjpg画像2-2</a>

<a href="http://www.japan/tokyo/jkl3.html">サンプルjpg画像2-3</a>

<a href="http://www.japan/tokyo/jkl4.html">サンプルjpg画像2-4</a>

     :

・サンプル画像2-3のリンク先のhtml

URLは http://www.japan/tokyo/jkl3.html で、titleは、JKL3 とします。

     :そのhtmlには次のような記述が含まれているとします。

<a href="http://www.japan/tokyo/jkl3.jpg">サンプルjpg画像2-3</a>

     :

・サンプル画像2-4のリンク先のhtml

URLは http://www.japan/tokyo/jkl4.html で、titleは、JKL4 とします。

     :そのhtmlには次のような記述が含まれているとします。

<a href="http://www.japan/tokyo/jkl4.jpg">サンプルjpg画像2-4</a>

     :

 

(1)PageURLとItemURLパターン指定

正規可パターンでURLを抽出する場合、「Page URLを正規化Patternで抽出」にチェックを入れます。

1 サンプル画像1-1,2 をダウンロードする場合

・他のページへ飛びませんのでPageURLは必要ありません。

 この場合「PageURLを抽出」のチェックは不要です。

・ItemURLにはhtmlに記述されたアイテムのURLをキャプチャするパターンを記述します。

PageURLとItemURLの設定はつぎのようになります。

TopURLの指定 http://www.japan/tokyo/bathtub.html  
PageURLパターン 空白(不要)  
ItemURLパターン <a\shref="(?<URL>.+?\.png)">  
階層指定  0  

補足:TopURLのhtmlは階層0に相当します。階層指定 0 はTopURLに貼り付けられたアイテムのURLにアクセス(ダウンロード)し、リンクURLは取得しません。

2 サンプル画像1-1,2,2-1,2 をダウンロードする場合

・PageURLにはhtmlに記述されたリンクページのURLをキャプチャするパターンを記述します。

・ItemURLにはhtmlに記述されたアイテムのURLをキャプチャするパターンを記述します。

 ダウンロードする画像の拡張子は png と jpg の2種類あるので、それぞれに対応するパターンが必要となります。 ItemURl欄には2つのパターンを記述します。

 パターンの先頭に階層数字を記述して、パターンが有効となる階層を指定します。

 階層指定数字が無い時は全階層でパターンが有効となります。解析時間を最適化するために、パターンを適用する階層を指定することをお勧めします。

PageURLとItemURLの設定はつぎのようになります。

TopURLの指定 http://www.japan/tokyo/bathtub.html  
PageURLパターン 0<a\shref="(?<URL>.+?\.html)"> (階層0で働く)
ItemURLパターン 0<a\shref="(?<URL>.+?\.png)"> (階層0で働く)
  1<a\shref="(?<URL>.+?\.jpg)"> (階層1で働く)
階層指定 1  

補足:この設定は、階層1までしかアクセスしませんので、階層2に位置するサンプル画像 2-3,2-4 はダウンロードできません。

3 サンプル画像1-1,2、2-1,2,3,4をダウンロードする場合

・PageURLには、2-3,4 の画像のURLへ飛ぶためのパターンが必要です、ここでは同じパターンを使うことができます。PageURLパターンの階層指定は階層0と1になります。

・ItemURLは(2)、(3)とおなじパターンですが、階層指定が増えて階層1と2になります。

TopURLの指定 http://www.japan/tokyo/bathtub.html  
PageURLパターン 01<a\shref="(?<URL>.+?\.html)"> (階層0,1で働く)
ItemURLパターン 0<a\shref="(?<URL>.+?\.png)"> (階層0で働く)
  12<a\shref="(?<URL>.+?\.jpg)"> (階層1,2で働く)
階層指定 2  

4 一連の動作と階層

 3つのケースについてパターン設定例を示しました。その動作は次のようになります。

① 先ず階層0のTopURLにアクセスしhtmlをキャプチャします。

②そのhtmlから ItemURLパターンに一致するアイテムダウンロードURLをキャプチャし、アイテムをダウンロードします。

  ここでサンプル画像1-1,1-2がダウンロードされます。

  <階層指定が0の場合ここで終了します。例(1)の場合>

③ TopURLのhtmlにPageURLパターンを用いてPageURLをキャプチャします。

  ----------ここまで階層0の処理----------

 取得したリンク先(階層1)にアクセスしてhmtlを取得します。

 ここで、abc.htmlにアクセスしてhtmlを取得します。

④取得したabc.htmlのhtmlに ItemURLパターンを用いアイテムダウンロードURLをキャプチャし、ダウンロードします。

  ここでサンプル画像2-1,2-2がダウンロードされます。

  <階層指定が1の場合ここでダウンロードが終了します。例(2)の場合>

⑤abc.htmlのhtmlにPageURlパターンを用いてPageURLをキャプチャします。

 jkl3.htmlとjkl4.htmlのURLをここでキャプチャします。

  ----------ここまで階層1の処理----------

 取得したリンク先(階層2)にアクセスします。

⑥先ずjkl3.htmlにアクセスしてそのhtmlを取得します。

⑦jkl3.htmlのhtmlにItemURLパターンを用いてItemURLをキャプチャし、アイテムをダウンロードします。

  ここで画像2-3がダウンロードされます。

⑧jkl4.htmlにアクセスしてそのhtmlを取得します。

⑧jkl4.htmlのhtmlにItemURLパターンを用いてItemURLをキャプチャし、アイテムをダウンロードします。

  ここで画像2-4がダウンロードされます。

⑨階層指定が1なので、ここではPageURLの解析は行わずに終了します。

  ----------ここまで階層2の処理----------

この処理の流れについては、URL解析の流れ図も参考にしてください。

(2)保存フォルダの指定方法

 ダウンロードアイテムは、保存フォルダ欄に表示されるパスのフォルダに保存されます。ここでは、Childフォルダ、Childフォルダ2、Subフォルダなどの指定方法を説明します。

 保存フォルダ欄には、C:\SaveFolder のパスが設定されているものとします。

1 Childフォルダを指定する  <Child>で指定

 この設定は、設定画面で行います。

 チェックボックス「Child」にチェックを入れます、Childフォルダ名をどのように得るかで方法が異なります。

(1)KeyWord欄の語句を使う。「Child」の隣の「KeyWord」にチェックを入れます。

(2)Child欄の語句を使う。「KeyWord」のチェックを外し、Child欄に平文で語句を記入します。

(3)Child欄のパターンでフォルダ名をキャプチャする。「KeyWord」のチェックを外し、Child欄に()で括った正規化パターンを記入します。このパターンを適用先を選択します。

  1.チェックボックス「Top」にチェックをいれて、TopURLに記載されるTopURLの文字列に正規化パターンを用います。

  2.チェックボックス「Top」にチェックを外し、PageURLで得られるhtmlに惜化パターンを用います。

 『開始』ボタンでダウンロードが開始するときにChildフォルダ指定に従い保存フォルダ欄を更新します。

 以降、その保存フォルダパスは保持され、ダウンロードしたアイテムはそのフォルダに保存されます。 

2 Childフォルダ2を指定する <Child>Groups

 この設定は、ダウンロード中に動的に保存フォルダを変更するための機能です。使えるのはPageURL欄だけでPageURLのキャプチャ正規化パターンの中に<Child>のGroups名で埋め込みます。

 PageURLを抽出する過程で条件が揃えばURLが抽出されますが、この時に<Child>のパターン指定があればPageURLのキャプチャパターンでキャプチャされた文字列に<Child>のパターンを用いてフォルダ名をキャプチャします。

 フォルダ名がキャプチャできればChildフォルダ2として保存フォルダを更新します。

 Childフォルダ2をキャプチャした時に得られたURLとそこから派生するリンクURLからダウンロードされるアイテムは更新されたフォルダに保存されます。

 そのURLとそこからリンクされた全てのダウンロードが終了すると保存フォルダパスは更新前のパスに戻ります。

・サンプル画像を Childフォルダ tokyo に保存するための設定

TopURLの指定 http://www.japan/tokyo/bathtub.html  
PageURLパターン 0<a\shref="(?<URL>.+?japan/(?<Child>.+?)/.+?\.html)">      (階層0で働く)
  1<a\shref="(?<URL>.+?\.html)">   (階層1で働く)
ItemURLパターン 0<a\shref="(?<URL>.+?\.png)">     (階層0で働く)
  12<a\shref="(?<URL>.+?\.jpg)">    (階層1,2で働く)
階層指定 2  

 サンプル画像1-1,1-2は C:\SaveFolder に保存されます。

 サンプル画像2-1,2,3,4は C:\SaveFolder\tokyo に保存されます。

 階層0と階層1のPageURLパターンは同じになりますが、階層0でのabc.htmlの取得しChildフォルダ名を取得するのと階層1でのjkl3.html、jkl4.htmlの取得を分けるためこのように記述し、階層0の方に<Child>のパターンを を記述します。

 こうすることで、abc.htmlのURLに対してSubフォルダABCを作ることができます。

3 Subフォルダを指定する 「title名サブフォルダ」で指定

 「title名サブフォルダ」にチェックを入れると、ダウンロードアイテムのリンクが貼り付けられたURLのtitleを使いSubフォルダを作り、そこに貼り付けられたアイテムを保存します。

 そのURLのダウンロードが終了すると、そのSubフォルダ指定は無効となります。

 Subフォルダは、保存フォルダ欄のパスの直下に作成されます。

 この設定は、設定画面で行います。

 サンプル画像1-1,1-2は C:\SaveFolder\BathTub に保存されます。

 サンプル画像2-1,2-2は C:\SaveFolder\ABC に保存されます。

 サンプル画像,2-4は C:\SaveFolder\JKL3 に保存されます。

 サンプル画像2-3は C:\SaveFolder\JKL4 に保存されます。

 

13.補足資料

正規表現エンジン既定のオプション

  ・パターンは、ECMAScript 正規表現ではなく、標準の形式として解釈されます。
  ・正規表現パターンは、左から右に入力文字列と照合されます。
  ・比較では大文字と小文字が区別されます。
  ・^ 言語要素および $ 言語要素は、入力文字列の先頭および末尾と一致します。
  ・. 言語要素は、\n を除く任意の 1 文字と一致します。
  ・正規表現パターンに含まれる空白は、リテラルの空白文字として解釈されます。
  ・パターンを入力文字列と比較するときに、現在のカルチャの規則が使用されます。
  ・正規表現パターンの抽出 Groupsは、暗黙的に指定される場合と明示的に指定される場合があります。

  PageURL,ItemURLの解析では、既定のオプションをベースに、大文字小文字を区別しないオプションと、マルチラインのオプション指定を用いています。

  また、抽出文字列の置換では、既定のオプションのまま利用しています。