Mengikis Kandungan Dinamik dengan Node.js
Apabila mengikis tapak web, tidak jarang ditemui kandungan dinamik yang mungkin tidak kelihatan serta-merta apabila halaman dimuatkan. Untuk mengekstrak data daripada halaman ini dengan berkesan, anda perlu memahami cara kandungan sedemikian dicipta.
Contoh dengan Cheerio
Pertimbangkan coretan kod berikut:
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')); }); });
Kod ini cuba mengikis tapak web menggunakan Cheerio, tetapi ia mengembalikan hasil kosong kerana elemen yang anda ingin ekstrak (
Penyelesaian: Menggunakan PhantomJS
Untuk mengikis kandungan dinamik, anda memerlukan penyelesaian yang boleh melaksanakan JavaScript dan simulasi pelayar. Di sinilah PhantomJS masuk. PhantomJS ialah enjin penyemak imbas tanpa kepala yang membolehkan anda melaksanakan arahan JavaScript dan memaparkan halaman web.
Begini cara anda boleh mengubah suai kod anda dengan 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() }); }); }); }); });Dengan memasukkan PhantomJS, anda kini boleh melaksanakan JavaScript pada halaman dan memanipulasi DOM untuk mengekstrak kandungan dinamik yang anda perlu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikis Kandungan Laman Web Dinamik Menggunakan Node.js dan PhantomJS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!