メインコンテンツへスキップ

補助メソッド (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!

MarkdownをHTMLに変換するスクレイパーの使用例

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(...)
}