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
Lepaskan: 2024-12-18 05:04:14
asal
529 orang telah melayarinya

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'));
    });
});
Salin selepas log masuk

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()
        });
      });
    });
  });
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan