Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengikis Kandungan Laman Web Dinamik Menggunakan Node.js dan PhantomJS?

Bagaimanakah Saya Boleh Mengikis Kandungan Laman Web Dinamik Menggunakan Node.js dan PhantomJS?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 07:50:10592semak imbas

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

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 (

    ) dicipta secara dinamik selepas halaman dimuatkan.

    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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn