ウェブスクレーピングのためのチェリオ対Pitpeteer:あなたのプロジェクトのために最高のツールを選ぶこと


このポストは、もともとフィーチャーされたScraperAPI .

チェリオ対操り人形:違いとそれらを使うとき


チェリオとPatpeteerは両方のノード用に作られたライブラリです.Webをスクレーピングするために使用できるJS(JavaScriptのバックエンド実行環境).ただし、プロジェクトのツールを選ぶ前に考慮する必要があります.
各ライブラリの詳細に移動する前に、チェリオとPantpeteerの間の概要比較:ここにあります
チェリオ対
  • チェリオは念頭に置いてWebスクライブで構築されました.
  • 操り人形は、ブラウザの自動化とテスト用に設計されました
  • チェリオは、パーサーのHTMLとXMLファイルをすることができるDOMパーサーです.
  • Puppeteerは、JavaScriptを実行することができます、単一のページアプリケーション(SPA)のような動的なページをscrapeすることができます.
  • チェリオは、スクリプトの背後にあるサイトやアクセスコンテンツと対話できません.
  • Peopeteerは、ログインフォームとスクリプトの背後にあるコンテンツにアクセスするWebサイトと対話することができます.
  • チェリオは簡単な構文のおかげで簡単に学習曲線があります.
  • それはより多くの機能を持っているし、より良い結果のためのasyncを必要とするように操り人形は、急な学習曲線を持っています.
  • Cheioは、Plepeteerと比較して速い稲妻です.
  • チチェリオと比べると、人形はかなり遅い.
  • チェリオは、JQueryのような構文とCSS/XPathセレクタを使用してDOMをナビゲートするためにデータを超簡単に抽出します.
  • Puppeteerは、スクリーンショットを取ることができるフォームを提出し、PDFファイルを作成します.
  • あなたが大きな絵のビジョンを持っている今、各ライブラリが提供しているものとどのようにWebからの代替データを抽出するためにそれらを使用することができますに深く飛び込みましょう.
    何がCherioですか?
    チェリオは、ノードです.生のHTMLとXMLデータを解析して、結果データ構造を横断して、操るのを助けるために首尾一貫したDOMモデルを提供するJSフレームワーク.要素を選択するには、CSSとXPathセレクタを使用してDOMを簡単に移動できます.
    しかし、チリオはスピードでよく知られている.Celioはブラウザのようなウェブサイトをレンダリングしないので(CSSや外部リソースをロードしない)、Cheioは軽量で高速です.小さなプロジェクトでは、我々は大きなスクラップタスクでは、大きな時間の節約になることは通知されません.
    何が人形ですか?
    一方、Puppeteerは実際にはブラウザの自動化ツール、WebサイトやWebアプリケーションをテストするユーザーの行動を模倣するように設計されます.それは「devtoolプロトコルの上でヘッドレスクロームまたはクロムを制御するために、高レベルAPIを提供します.」
    ウェブスクレーピングでは、Petpeteerは我々のスクリプトをブラウザエンジンのすべての力を与えます.そして、我々がJavaScript実行(SPASのような)を必要とするページを削ることを許します.そして、無限のスクロール、ダイナミックな内容とより多くを傷つけます.
    あなたはウェブスクレーピングのためのチェリオやおむつを使用する必要がありますか?
    あなたはすでに最良のシナリオのアイデアを持っている可能性がありますが、私たちは道のすべての疑いを取ることができます.クリック、JSのレンダリング、またはフォームを提出するような相互作用を必要としない静的なページを削りたい場合は、チェリオは最良のオプションですが、ウェブサイトが新しいコンテンツを注入するためにJavaScriptの任意のフォームを使用する場合は、Pitpeteerを使用する必要があります.
    我々の推薦の後ろの推論は、操り人形が静的ウェブサイトのためにちょうどoverkillであるということです.チェリオは、より多くのページを高速化し、コードのより少ない行でスクラップに役立ちます.
    これは、両方のライブラリを使用する場合は、実際には最良の解決策である複数のケースがあります.結局のところ、チェリオは簡単に解析し、要素を選択することができます一方、Petpeteerは、スクリプトの背後にあるコンテンツへのアクセスを提供し、無限のpaginationsのためのスクロールのようなイベントを自動化するのに役立ちます.
    チラリオと操り人形によるスクレーパーの構築
    この例を次のように簡単にするには、私たちはスクレーパーをPetpeteerとhttps://quotes.toscrape.com/ そして、1ページからすべての引用と著者を戻してください.

    ノードのインストール.ジェイ、チリオ、そして、操り人形
    ノードをダウンロードします.公式サイトからのJSとインストーラからの指示に従ってください.それから、我々は新しいプロジェクト・フォルダーを作成します(私たちはそれを「チェリオPitpeteerプロジェクト」と呼びました)、そして、VsCodeの中でそれを開きます.プロジェクトフォルダ内で、新しいターミナルを開き、NPM INIT - Yと入力して、プロジェクトを起動します.

    Patpeteerを使用してターゲットのウェブサイトを開きます
    今私たちの依存関係をインストールする準備ができてNPMをインストールしてCheio Pipepeteerをインストールします.数秒後、我々は行く準備ができているはずです.新しいファイルを作成します.私たちの依存関係をインポートします.
    トル・コンストは必要である
    CHESTチェリオ=必須(『チアリオ』);
    次に、すべての結果を格納するために、ScrapedRound引用符という名前の空のリストを作成します.我々が忘れないように、我々はブラウザーを書きます.close ()メソッドの関数です.
    引用符=[ ];
    ( async ()>> {
    ブラウザを待つ.close ()
    ));
    人形を使用して、新しいブラウザのインスタンスを起動し、新しいページを開き、ターゲットのウェブサイトに移動しましょう.
    てんぷらブラウザー=おむつを待つ.launch ()
    ページを表示します.newPage ()も参照ください.
    ページを待つ.後藤」https://quotes.toscrape.com/');_
    チェリオでHTMLを解析する
    ウェブサイトのHTMLへのアクセスを得るために、私たちは評価を使用して、生のHTMLデータを返すことができます.
    注意してください.を評価する
       return {
    
           html: document.documentElement.innerHTML,
    
       };
    
    ));
    テスト用にコンソールを使用できます.log ( PageData )レスポンスを端末にログ出力します.我々がすでにそれが働くということを知っているので、我々は解析のために生のHTMLをチェリオに送ります.
    チェックイン=チェリオ.を読み込みます.
    現在、私たちはプロジェクトの残りのためにHTMLファイルの解析されたバージョンを参照するために$を使用できます.
    チェリオで要素を選択する
    実際にコードを書く前に、まずページがどのように構成されているかを知る必要があります.ブラウザでページ自体に行って、引用符を含むカードを調べましょう.

    我々は興味を持っている要素は、クラスの引用では、divの中にあることがわかります.それで、我々はそれらを選択することができて、引用文テキストと著者を抽出するためにdivの全てを繰り返すことができます.
    これらの要素を検査した後、我々の目標は以下の通りです.
  • ターゲット要素を含むdiv :$(' div quote ')
  • テキストを引用します.見つける
  • 引用著者:$要素.find ('. author ')
  • これをコード化しましょう
    カードをクォートします
    クォートカード.各(インデックス、要素)={ }
       quote = $(element).find('span.text').text();
    
       author = $(element).find('.author').text();
    
    ));

    text ()メソッドを使用すると、HTMLの文字列を返す代わりに、要素内のテキストにアクセスできます.
    スクラップされたデータをフォーマットリストに押し込む
    我々がコンソールならば.log data ()この時点で、テキストの乱雑になります.代わりに、関数の外部に作成した空のリストを使用し、そこにデータをプッシュします.そのためには、2つの新しい行をスクリプトに追加します.
    crcを引用する.プッシュする
           'Quote': quote,
    
           'By': author,
    
       })_
    
    終了コード例
    今ではすべての場所に、我々はコンソールすることができます.ブラウザを閉じる前に
    \/依存
    Const Philpeteerは要求します
    CLESTチェリオは、=必要です
    //データを保存するリストを空にします
    引用符=[ ];
    //スクレーパの主な機能
    ( async ()>> {
    //ページを起動して開きます
    Constのブラウザ= Puppeteerを待つ.launch ()
    ページを表示します.newPage ()も参照ください.
    //URLへの移動
    ページを待つ.後藤」https://quotes.toscrape.com/' );
    //生のHTMLにアクセスする
    ページを待つ.を評価する
       return {
    
           html: document.documentElement.innerHTML,
    
       };
    
    ));
    //HTMLをパースし、要素を選択する
    Chest $=チェリオ.読み込み( PageData . html );
    クォートカードを指定します
    クォートカード.各(インデックス、要素)={ }
       quote = $(element).find('span.text').text();
    
       author = $(element).find('.author').text();
    
       //pushing our data into a formatted list
    
       scraped_quotes.push({
    
           'Quote': quote,
    
           'By': author,
    
       })
    
    ));
    //結果をログ出力するコンソール
    コンソール.ログ(スクレイテックス引用);
    //ブラウザを閉じる
    ブラウザを待つ.close ()
    ));
    結果としてフォーマットされたデータのリストが得られます:

    私はあなたが間違いなくJavaScript/ノード用に利用可能な2つの最高のWebスクレージングツールのこの簡単な概要を楽しんだことを願っています.jsほとんどの場合、あなたはPetpeteer上でチリオを使用したいと思いますが、それらの余分な複雑なプロジェクトのお誘いは、仕事を得るために必要な余分なツールをもたらします.