Webスクレイピングは、特定の調査や比較の目的を取得するために、大規模なWebサイトからデータを抽出するための優れた方法です。 たとえば、一連の製品のすべての詳細を表示したり、スポーツチームやホテルの料金に関する統計を検索したりできます。
Web から手動でデータをスクレイピングするオプションもありますが、時間がかかります。 Web スクレイパーの作成方法に疑問を持っていて、複雑ではないかと心配している場合でも、心配しないでください。 自動ツールを使用してデータを簡単に抽出し、タスクを迅速かつ簡単にします。 このツールを構築するには、クエリの対象を見つけるための検索エンジンを構築するためのいくつかの手順が必要です。 このプロセスは、 NodeJSWebスクレイピングチュートリアル.
構築の準備:必要なもの
には XNUMX つの重要なステップがあります。 Webスクレイパーを構築する:
-
HTMLリクエストライブラリから必要なデータを見つけるか、見出しのないブラウザを使用してください。
-
生データの解析を開始して、必要な特定の情報を見つけます。
開始する必要があるものは次のとおりです。
-
コンピュータにインストールされているNodeJSおよびnpmのバージョン8以降。
-
Webスクレイピングデータを要求するためのライブラリ(request-promiseまたは Axios、Puppeteer、およびCheerio)
準備段階を設定するには、次のXNUMXつのライブラリをダウンロードする必要があります。 要求 - 約束, 人形, CheerioJS npmインストール コマンド、続いて -save request request-promise cheeriopuppeteerによって。 Chromium を同時にインストールする必要があるため、特に Puppeteer ではダウンロードの時間枠が異なる場合があります。 すべてのインストールが完了すると、最初のリクエストを行う準備が整います。
ステップ1:特定の検索で最初のリクエストを行う
すべてのライブラリをインストールしたら、最初のクエリ リクエストを行う準備が整います。 新しいテキストファイルを開いて、目的のWebサイトからHTMLを受信する関数を記述します。 検索している特定のデータを特定し、リストまたはWebサイトのHTMLを取得する関数を作成する必要があります。
たとえば、ホテルやリゾートのリストを探している場合は、カヤックやエクスペディアなどの休暇用の Web サイトをリクエストできます。 検索条件に基づいてファイルに名前を付けます (つまり、hotelScraper.js)。 ウィキペディアは、大量のリストやデータを見つけるための一般的な選択肢です。
const URL = HTTPS:// (ウェブサイトの名前)
ステップ2:生データを処理する
フィルタリングしようとしている Web サイトから出力または生の HTML を受け取ったら、解読が困難な大量のテキストに気付くでしょう。 Chrome DevTools は、Web ページの HTML をフィルタリングするために使用する次のツールです。 このプロセスは、右クリックを使用してスクレイピングする要素を選択することにより、GoogleChromeを介して実行されます。 たとえば、ホテルを「スクレイピング」する場合は、この要素をクリックして、個々のページへのリンクを受け取ります。
結果はDevToolsとは別のペインに表示され、ページのHTMLソースに関連するすべてのものが表示されます。 データを確認するときは、内部のハイパーリンクを示す「big」タグを探してください。 生データの解析はプロセスの次の段階であり、これはCheerio.jsを使用して行われます。
ステップ3:Cheerio.jsを使用してデータを解析する
Cheerio.jsは、最初のリストのHTMLを解析するために使用されるツールであり、Webサイトページのリンクを表示します。 このコマンドは次のように作成されます。
const rp = require( 'request-promise')
const $ = require( 'cheerio')
const URL = HTTPS:// (ウェブサイトアドレスの詳細)
結果または出力には、ページに「大きな」タグがないすべての要素が一覧表示されます。 このリストはより詳細で、各要素の特定のページへのリンクが含まれています。 この次のクエリは、前のリストの各要素に関連するすべての個々の Web サイトの詳細を提供します。
たとえば、ニューヨーク州北部にあるホテルチェーンを検索した場合、新しいファイル、つまりhotelParse.jsを作成して解析し、各ソースから正確にする特定のデータを指定できます。
const rp = require( 'request-promise')
const URL = HTTPS:// (要素の特定の Web サイト – つまりホテルの Web サイト)
ステップ 4: さらに解析するためのデータの定義
このコマンドは、価格帯、部屋のサイズ、場所など、各ホテルの情報との要素のリンクを指定します。この情報を見つけるには、ChromeDevToolsは解析用のコードの構文を見つける必要があります。 たとえば、ホテルの住所を探している場合は、Cheerio.jsを使用してこれを抽出できます。
const rp = require( 'request-promise')
const $ = require('cheerio')
const URL = HTTPS:// (要素の特定の Web サイト – つまりホテルの Web サイト)
次に、例としてホテルの住所の特定のデータを抽出する関数を追加し、「firstHeading」というラベルを付けます。
rp(URL)
.then(関数(HTML)
console.log($( '。firstHeading'、HTML).text())
console.log($( '。(具体的な詳細 – ホテルの住所や場所など)、 HTML).text())
ステップ 5: モジュールの抽出データのコンパイル
抽出されたデータをモジュールに移動すると、次のコマンドは要求された情報をエクスポートしてコンパイルします。
const rp = require( 'request-promise')
const $ = require('cheerio')
定数 (作成されたファイル–すなわちhotelParse) =関数(URL)
rp(URL)を返す
.then(関数(HTML)
return
名前:$( '。firstHeading'、HTML).text()
(ホテルの基準–住所または場所)
上記のコマンドは、抽出する特定のデータによって異なる場合があります。
ステップ 6: Net Scraper ファイルと解析モジュールの適用
次に、Webスクレイピングプロセス用に作成されたXNUMXつのファイル(つまり、hotelScraper.jsとhotelParse.js)。 最初のファイルとモジュールは、次のコマンドで結合されます。
const rp = require( 'request-promise')
const $ = require('cheerio')
定数 (ホテルの住所)解析 = require('./(ホテルの住所)Parse')
const url = http:// (ウェブサイトリスト)
rp(url)
.then(function(html)
//成功!
個々のスクレイピング基準に基づいて、この結果に続く詳細があることがわかります。 結果または出力は、各ホテルと住所または場所、または要求された情報を含む、Web スクレイピング検索のすべての特定の詳細の詳細なリストを生成する必要があります。
NodeJSとPuppeteerを使用してデータを抽出する実用的で簡単な方法
Cheerio.jsと一緒にrequest-promiseモジュールを使用すると、ほとんどのWebサイトからオンラインでデータを簡単に取得できます。 WebサイトがコンテンツにJavaScriptを使用している場合、HTTPベースのリクエストライブラリを使用してデータを抽出する際に問題が発生する可能性があります。 Puppeteerモジュールを使用することで、JavaScriptでスクレイピングを実行し、結果を生成できます。
const puppeteer = require( 'puppeteer')
const URL = 'HTTPS:// (ウェブサイト)
人形
.launch()
.then(function(browser)
ブラウザの .newPage() を返す
.then(function(page)
page.goto(URL).then(function()を返す
page.content()を返す
上記のセクションは異なる場合があり、検索または検索するデータに基づいて追加情報が必要になる場合があります。 Webスクレイパーを構築するには、クエリを実行するWebサイトに基づいて使用するコマンドにいくつかの練習と変更が必要になる場合があります。
事前に構築されたモジュールを使用してWebスクレイパーを構築する
事前に作成されたWebスクレイパーは、時間がない場合や自分で作成することに不安がある場合に、はるかに簡単なオプションです。
スクレーパーの作成には、特定のツールと利用可能なオプションを学習するのに時間がかかる場合があります。 あなたは方法のバリエーションを見つけるでしょう NodeJS サーバーでデータをスクレイピングする さまざまなライブラリとモジュールを使用して、目的の結果を取得します。 素晴らしいものがたくさんあります リソースとチュートリアル データ抽出に最適なツールを決定するために利用できます。 また、 クラウドベースのPAASを構築してデプロイする スクレイピングツールをできるだけ早く起動して実行するため。
Web 上のデータをふるいにかけるために考慮すべきオプションは他にもたくさんあります。 ローカル ストレージ リソースに。 ユーザーフレンドリーなインターフェースのレベルは、ツールごとに大きく異なります。 一部のプラットフォームは他のプラットフォームよりもはるかに使いやすく、一部のシステムは他のプラットフォームよりも複雑なコマンドを必要とします。 一部のツールは、必要な結果が得られるまで、チュートリアル形式のヒントとステップから次のステップへのヘルプを提供します。
画像クレジット:Unsplash.comのPankajPatelによる写真
コインスマート。 BesteBitcoin-ヨーロッパのBörse
ソース: https://datafloq.com/read/building-web-scraper-nodejs/15429