JavaScriptドキュメント抽出器を作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
関数を使用して属性値を抽出するJavaScriptドキュメント抽出器を作成します。この型抽出器は、通常、XPath式では不十分な複雑なシナリオでこのメソッドが使用されます。
JavaScriptドキュメント抽出器は、高度なWebクローラー とAPIクローラー ・ソースで使用できます。
JavaScriptを使用して、特定のGLOBパターンの条件に一致するURLから属性値を抽出するには:
-
メニュー バーでSourcesをクリックし、作成したソースを選択します。
-
Source SettingsページのDocument Extractorsの横にある
Editをクリックします。 -
ドキュメント抽出ツールを作成するには、Document Extractorsページで次の操作を行います。
-
Nameフィールドに、抽出器のわかりやすい名前を入力します。
たとえば、「 Home loans JS extractor」と入力します。
-
Extractor Typeドロップダウンメニューで、JSをクリックします。
-
オプションで、この抽出ツールのロジックが特定のパターンに 一致するURLにのみ適用されるようにするには、URLs to Matchを設定します。これを行うには、URLs To Matchフィールドで
Add Matcherをクリックし、使用する式のTYPEを選択し、その式のVALUEを入力します。たとえば、次の形式のすべてのURLをクロールするには、 <some text>/homeloans/<some text>TYPEドロップダウンメニューでGlob Expressionをクリックし、VALUEを **/homeloans/**.* として入力します。
-
-
Taggersセクションで、最初のタグの横にあるEdit
をクリックします。通常、contentタグです。タグエディターには、description、name、type、image_urlおよびurl属性を返すサンプルJavaScript関数が表示されます。Searchでは、構成に役立つこのサンプルを提供しています。
手記ドキュメント抽出ツールでは、それぞれが一意のタグにリンクされている複数のタガーを作成できます。
たとえば、5つの属性を抽出する方法を定義するJavaScript関数を持つタガーが1つある場合、各ドキュメントone fiveつの属性を持つインデックス ドキュメントのセットを取得します。ただし、3つのタガーがあり、それぞれに1つの抽出方法を定義するJavaScript関数がある場合は、各ドキュメントに属性を持つインデックス ドキュメントのセットonethree取得されます。
-
タグ エディターで、サンプル関数を編集するか、属性値を返す新しいJavaScript関数を貼り付けます。
手記この関数はCheerio構文を使用し、オブジェクトの配列を返す必要があります。
たとえば、次のように貼り付けます。
function extract(request, response) { $ = response.body; curr_url = request.url; let url = request.url; let type, subtype; type = 'homes'; if (url.includes('/moving/')) { subtype = 'Moving'; } else if (url.includes('/plans-products/')) { subtype = 'Plans and products'; } else if (url.includes('/partnerships/')) { subtype = 'Partnerships'; } else if (url.includes('/referrals/')) { subtype = 'Referrals'; } else { subtype = 'misc'; } let name, subtitle, description, image, date, year; name = $('h1[class="main-title"]').text() !== null ? $('h1[class="main-title"]').text().replace(/\s\s+/g, ' ').trim() : ''; subtitle = $('h2[class="htmlSubtitle"]').text() !== null ? $('h2[class="htmlSubtitle"]').text().replace(/\s\s+/g, ' ').trim() : ''; description = $('div[class="bodycopy"]').text() !== null ? $('div[class="bodycopy"]').text().replace(/\s\s+/g, ' ').trim() : ''; image = $('div[class="hero-img"]').find('img').attr('src') !== null ? 'https://www.txu.com' + $('div[class="hero-img"]').find('img').attr('src') : ''; return [{ 'name': name, 'subtitle': subtitle, 'description': description, 'image_url': image, 'type': type, 'subtype': subtype, 'url': url }]; }この関数は、次のロジックを使用して属性を取得します。
-
type - 固定値 (例: homes) を使用します。
-
subtype - URLパスに応じて5つの値のいずれかを取ることができる変数。
-
url - これをrequest.urlから入手します。
-
name - <h1 class="main-title"> タグのテキストに値がある場合は、そのテキストの変更された形式をNameとして使用します。空の場合は、空の文字列を使用してName。
-
subtitle - <h2 class="htmlSubtitle"> タグのテキストに値がある場合は、そのテキストの変更された形式をNameとして使用します。空の場合は、空の文字列を使用してName。
-
description - <bodycopy><div> クラスのテキストに値がある場合は、そのテキストの変更された形式をDescriptionとして使用します。空の場合は、空の文字列を使用してDescription。
-
image_url- hero-imgdivクラスのimg src属性に値がある場合は、そのURLの変更された形式を使用します。空の場合は、空の文字列を使用してImage_url。
-
-
タグエディタで、Saveをクリックします。
-
必要に応じて、別のタグの属性を抽出するには、
Add Taggerをクリックし、Tagドロップダウンメニューでタグをクリックして、手順5と6を繰り返します。 -
Document Extractorsページで、Saveをクリックします。