JavaScriptドキュメントエクストラクタを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
属性値を抽出する関数を使ったJavaScriptドキュメントエクストラクタを作成します。このタイプのエクストラクタは、XPath式では不十分な複雑な状況で通常この方法で使われます。
!注 高度なウェブクローラー やAPIクローラー ソースを組み合わせたJavaScriptドキュメントエクストリクタを使うことができます。
特定のGLOBパターンの条件に一致するURLから属性値を抽出するためにJavaScriptを使う方法:
-
メニューバーで 「Sources」をクリックし、作成したソースを選択します。
-
ソースSettingsページで**、ドキュメント抽出器の横に「
編集**」をクリックします。 -
ドキュメントエクストラクターを作成するには、ドキュメントエクストラクターのページで:
-
名前欄に抽出器の意味のある名前を入力します。
例えば、住宅ローンのJS抽出器に入ります。
-
Extractor Typeのドロップダウンメニューで**、JS**をクリックします。
-
オプションとして、このエクストラクタのロジックが特定のパターンに一致するURLにのみ適用されるようにするために、URLを「Match」に設定してください。これを行うには、「URLs To Match」フィールドで「Add Matcher」をクリックし
「Add Matcher」をクリックし、使いたい式のタイプを選択し、その式の値を入力してください。例えば、この形式の*/homeloans/*ですべてのURLをクロールするには、TYPEドロップダウンメニューのGlob Expressionをクリックし、VALUEを**/homeloans/**.*として入力できます。
-
-
タグセクションで、最初のタグの横にある**「編集**
」をクリックします。通常はコンテンツタグです。タグエディターには、説明、名前、タイプ、image_url*、URL*属性を返すサンプルJavaScript関数が見られます。Search設定の助けとしてこのサンプルを提供しています。
!注ドキュメントエクストラクターでは、それぞれがユニークなタグにリンクされた複数のタグガーを作成できます。
例えば、5つの属性の抽出方法を定義するJavaScript関数を持つタグ付け器が1つある場合、各ドキュメントに5つの属性を持つ1つのインデックス文書セットが得られます。しかし、タグ付けが3つで、それぞれに1つの属性を定義するJavaScript関数がある場合、各ドキュメントに1つの属性を持つ3つのインデックスドキュメントセットができます。
-
タグエディターでサンプル関数を編集するか、新しい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 = $('h1class="main-title"').text() !== null ? $('h1class="main-title"').text().replace(/\s\s+/g, ' ').trim() : ''; subtitle = $('h2class="htmlSubtitle"').text() !== null ? $('h2class="htmlSubtitle"').text().replace(/\s\s+/g, ' ').trim() : ''; description = $('divclass="bodycopy"').text() !== null ? $('divclass="bodycopy"').text().replace(/\s\s+/g, ' ').trim() : ''; image = $('divclass="hero-img"').find('img').attr('src') !== null ? 'https://www.txu.com' + $('divclass="hero-img"').find('img').attr('src') : '';
return { 'name': name, 'subtitle': subtitle, 'description': description, 'image_url': image, 'type': type, 'subtype': subtype, 'url': url }; }
この関数は以下のロジックを使って属性を取得します:
- type - 固定価値、例えば 住宅を用いる。
- subtype - URLパスに応じて5つの値を取ることができる変数。
- url - これを取って request.url。
- name -
タグのテキストに値がある場合、そのテキストの修正形を Nameとして使います。空の場合は空文字列を Nameに使います。
日本語翻訳に関する免責事項このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
- subtitle - タグのテキストに値がある場合、そのテキストの修正形を Nameとして使います。空の場合は空文字列を Nameに使います。
- description -
`` クラスのテキストに値がある場合、そのテキストの修正形を Descriptionとして使用します。空の場合は空文字列を Descriptionに使います。 - image_url- hero-img``divクラスのimg src属性に値がある場合は、そのURLの修正形を使用します。空の場合は空文字列を使いImage_url。
-
タグエディターで「 保存」をクリックします。
-
オプションで、別のタグの属性を抽出するには「タグ付け
追加」をクリックし、タグのドロップダウンメニューでタグをクリックしてステップ5と6を繰り返します。 -
ドキュメント抽出器のページで、保存をクリックします。