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

Bagaimanakah Saya Boleh Mengikis Kandungan Halaman Web Dinamik Menggunakan Node.js?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-18 05:04:14531semak imbas

How Can I Scrape Dynamic Web Page Content Using Node.js?

Mengikis Halaman dengan Kandungan Dinamik Menggunakan Node.js

Untuk pengikis web, kandungan dinamik boleh menimbulkan cabaran. Satu contoh sedemikian ialah apabila elemen halaman dibuat selepas halaman awal dimuatkan. Dalam senario sedemikian, kaedah mengikis standard mungkin tidak mencukupi.

Pertimbangkan isu ini apabila menggunakan cheerio dalam Node.js. Kod berikut cuba mengikis elemen dari halaman, tetapi elemen dinamik tidak hadir apabila pemuatan cheerio berlaku:

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 selalunya mengembalikan respons kosong kerana elemen belum hadir dalam halaman HTML apabila cheerio dimuatkan. Jadi, bagaimanakah kita boleh mendapatkan semula elemen ini menggunakan Node.js?

Penyelesaian: Menggunakan PhantomJS

Untuk mengendalikan kandungan dinamik, kami boleh menggunakan PhantomJS, pelayar web tanpa kepala yang boleh melaksanakan JavaScript. PhantomJS membolehkan kami mensimulasikan pelayar yang berinteraksi dengan halaman dan mendapatkan semula elemen apabila ia tersedia. Berikut ialah contoh menggunakan 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()
        });
      });
    });
  });
});

Dalam kod ini, kami mula-mula memasukkan jQuery ke dalam halaman menggunakan PhantomJS, membolehkan kami berinteraksi dengan elemen secara dinamik. Kami kemudian menilai kod JavaScript yang log atribut href elemen ke konsol.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikis Kandungan Halaman Web Dinamik Menggunakan Node.js?. 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