補助メソッド (utils, tools, sleep)
this.utils.*
.updateResultsData(results, data)
await this.utils.updateResultsData(results, data) - $pages.$i.data と $data を自動的に入力するためのメソッドです。結果ページのコンテンツを追加するために呼び出す必要があります。
.urlFromHTML(url, base)
await this.utils.urlFromHTML(url, base) - HTMLコードから取得したリンクを処理します。エンティティ(& など)をデコードし、オプションで base(ベースURL、例:元のページのURL)を渡すことで、完全なリンクを取得できます。
.url.extractDomain(url, removeDefaultSubdomain)
await this.utils.url.extractDomain(url, removeDefaultSubdomain) - 第1引数としてリンクを受け取り、そのリンクからドメインを返します。第2引数(オプション)は、ドメインからサブドメイン www を削除するかどうかを指定します。デフォルトは 0(削除しない)です。
.url.extractTopDomain(url)
await this.utils.url.extractTopDomain(url) - 第1引数としてリンクを受け取り、サブドメインを除いたドメインを返します。
.url.extractTopDomainByZone(url)
await this.utils.url.extractTopDomainByZone(url) - 第1引数としてリンクを受け取り、地域ドメインゾーンを含むサブドメインを除いたドメインを返します。すべての地域ゾーンに対応しています。
.url.extractMaxPath(url)
await this.utils.url.extractMaxPath(url) - 文字列を受け取り、その中からURLを抽出します。
.url.extractWOParams(url)
await this.utils.url.extractWOParams(url)- リンクを受け取り、パラメータ文字列を切り捨てたリンクを返します。つまり、? までのURLを返します。
.removeHtml(string)
await this.utils.removeHtml(string) - 文字列を受け取り、HTMLタグを除去した状態の文字列を返します。
await this.utils.removeNoDigit(string) - 文字列を受け取り、数字以外のすべての文字を削除して結果を返します。
.removeNoDigit(string)
await this.utils.removeNoDigit(string) - このメソッドは文字列を受け取り、数字以外のすべてを削除して結果を返します
.removeComma(string)
await this.utils.removeComma(string) - このメソッドは文字列を受け取り、.,\r\n などの文字を削除して結果を返します
.getAllBlocks(html, regexp, opts?)
await this.utils.getAllBlocks(html, regexp, opts?) - ページ上の対応する閉じタグを持つすべてのブロックを取得します。このメソッドは HTML 文字列とブロックの開始を示す正規表現(<div>...</div> のようにペアの閉じタグを持つ任意のブロック)を受け取り、見つかったすべてのブロックの配列を返します
オプション opts:
searchStartIndex- 検索を開始する文字列内のインデックスを指定します。デフォルトは0です
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)
.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)
await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - .getAllBlocks と同様のメソッドですが、ブロックの開始を検索する正規表現の代わりに、タグ名、検索対象の属性名(例: id, class)、および指定された属性の値に適用される正規表現を指定します
const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)
await tools.*
グローバルオブジェクト tools は、A-Parser の組み込み機能へのアクセスを可能にします
テンプレートエンジンのツール $tools.* のアナログです
tools.query は利用できません。this.query を使用する必要があります
await tools.createTemplate(string)
JavaScript スクレイパー内で Template Toolkit テンプレートエンジンを使用できるようにします。
let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!
await this.sleep(sec)
await this.sleep(sec)
スレッドの遅延を秒数 (sec) で設定します。小数の指定も可能です。
await this.mutex.*
スレッド間の同期のためのミューテックスで、1つのスレッドに対してコードセクションをロックできます
.lock()
ロックを待機します。ロックを取得した最初のスレッドが実行を継続し、他のスレッドはロックが解放されるのを待機します
.unlock()
ロックを解放します。ロックを待機していた場合、次のスレッドが実行を継続します - .lock()
results.<array>.addElement()
メソッド results.<array>.addElement() を使用すると、results 内の配列をより便利に埋めることができます。これを使用すると、配列内の変数の順序を覚えて手動で列挙する必要がなくなります。
results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});
this.isContextAlive()
このメソッドは、ループ内でクエリを処理する存続期間の長いスレッドに必要であり、タスクの停止時や削除時に正しく処理を終了できるようにします
while (this.isContextAlive()) {
await this.request(...)
}