ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js と PhantomJS を使用して動的 Web サイトのコンテンツをスクレイピングするにはどうすればよいですか?

Node.js と PhantomJS を使用して動的 Web サイトのコンテンツをスクレイピングするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-13 07:50:10
オリジナル
618 人が閲覧しました

How Can I Scrape Dynamic Website Content Using Node.js and PhantomJS?

Node.js を使用した動的コンテンツのスクレイピング

Web サイトをスクレイピングするときに、動的コンテンツがすぐに表示されないことはよくあります。ページが読み込まれます。これらのページからデータを効果的に抽出するには、そのようなコンテンツがどのように作成されるかを理解する必要があります。

Cheerio の例

次のコード スニペットを考えてみましょう:

var request = require('request');
var cheerio = require('cheerio');
var url = "http://www.bdtong.co.kr/index.php?c_category=C02";

request(url, function (err, res, html) {
    var $ = cheerio.load(html);
    $('.listMain > li').each(function () {
        console.log($(this).find('a').attr('href'));
    });
});
ログイン後にコピー

このコードは Cheerio を使用して Web サイトをスクレイピングしようとしますが、抽出したい要素 (

    ) が含まれていないため、空の結果が返されます。

    解決策: PhantomJS の使用

    動的コンテンツをスクレイピングするには、JavaScript を実行してブラウザをシミュレートできるソリューションが必要です。ここで PhantomJS が登場します。PhantomJS は、JavaScript コマンドを実行して Web ページをレンダリングできるヘッドレス ブラウザ エンジンです。

    PhantomJS を使用してコードを変更する方法は次のとおりです:

var phantom = require('phantom');

phantom.create(function (ph) {
  ph.createPage(function (page) {
    var url = "http://www.bdtong.co.kr/index.php?c_category=C02";
    page.open(url, function() {
      page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
        page.evaluate(function() {
          $('.listMain > li').each(function () {
            console.log($(this).find('a').attr('href'));
          });
        }, function(){
          ph.exit()
        });
      });
    });
  });
});
ログイン後にコピー

PhantomJS を組み込むことで、ページ上で JavaScript を実行し、DOM を操作して必要な動的コンテンツを抽出できるようになります。

以上がNode.js と PhantomJS を使用して動的 Web サイトのコンテンツをスクレイピングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート