ホームページ >ウェブフロントエンド >jsチュートリアル >Node.js と PhantomJS を使用して動的 Web サイトのコンテンツをスクレイピングするにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。