Rumah > hujung hadapan web > tutorial js > Mengikis web di node.js

Mengikis web di node.js

Jennifer Aniston
Lepaskan: 2025-02-24 08:53:09
asal
633 orang telah melayarinya

Web Scraping in Node.js

mata teras

    Node.js 'Crawling Web melibatkan memuat turun kod sumber dari pelayan jauh dan mengekstrak data daripadanya.
  • Modul cheerio request melaksanakan subset jQuery yang boleh membina dan menghuraikan dom dari rentetan HTML, tetapi sukar untuk menangani HTML yang tidak berstruktur.
  • menggabungkan cheerio dan
  • boleh membuat crawler web lengkap untuk mengekstrak unsur -unsur tertentu laman web, tetapi mengendalikan kandungan dinamik, mengelakkan larangan, dan mengendalikan laman web yang memerlukan log masuk atau menggunakan CAPTCHA akan lebih rumit dan mungkin memerlukan Alat atau strategi tambahan.
  • request cheerio Crawler Web adalah perisian yang mengakses halaman web dan mengekstrak data dari mereka. Oleh kerana isu -isu seperti pertindihan kandungan, Web merangkak adalah topik yang agak kontroversial. Kebanyakan pemilik laman web lebih suka mengakses data mereka melalui API yang tersedia secara umum. Malangnya, banyak laman web menawarkan kualiti API yang lemah dan tidak ada API sama sekali. Ini memaksa ramai pemaju untuk beralih ke web merangkak. Artikel ini akan mengajar anda cara melaksanakan crawler web anda sendiri di Node.js. Langkah pertama dalam merangkak web adalah untuk memuat turun kod sumber dari pelayan jauh. Dalam "Membuat Permintaan HTTP di Node.js", pembaca belajar bagaimana menggunakan halaman muat turun modul
  • . Contoh berikut dengan cepat mengkaji cara membuat permintaan mendapatkan di Node.js.

request Langkah kedua di Web Crawling, yang juga merupakan langkah yang lebih sukar, adalah untuk mengekstrak data dari kod sumber yang dimuat turun. Di sisi pelanggan, tugas ini dapat dicapai dengan mudah menggunakan perpustakaan seperti API pemilih atau jQuery. Malangnya, penyelesaian ini bergantung kepada andaian bahawa DOM boleh ditanya. Malangnya, Node.js tidak menyediakan DOM. Atau adakah ada?

var request = require("request");

request({
  uri: "http://www.sitepoint.com",
}, function(error, response, body) {
  console.log(body);
});
Salin selepas log masuk
Salin selepas log masuk

Modul Cheerio

Walaupun node.js tidak mempunyai DOM terbina dalam, terdapat beberapa modul yang boleh membina DOM dari rentetan kod sumber HTML. Dua modul DOM yang popular adalah dan

. Artikel ini memberi tumpuan kepada

, yang boleh dipasang menggunakan arahan berikut: cheerio jsdom Modul cheerio

melaksanakan subset jQuery, yang bermaksud banyak pemaju boleh bermula dengan cepat. Malah,
npm install cheerio
Salin selepas log masuk
Salin selepas log masuk
sangat mirip dengan jQuery, dan mudah untuk mendapati diri anda cuba menggunakan fungsi jQuery yang tidak dilancarkan dalam

. Contoh berikut menunjukkan cara menghuraikan rentetan HTML menggunakan cheerio. Baris pertama akan mengimport cheerio ke dalam program. cheerio Pembolehubah menjimatkan serpihan HTML untuk dihuraikan. Pada baris 3, HTML HTML menggunakan cheerio. Hasilnya diberikan kepada pembolehubah cheerio. Tanda dolar dipilih kerana ia secara tradisinya digunakan dalam jQuery. Baris 4 menggunakan pemilih gaya CSS untuk memilih elemen <code>html . Akhirnya, gunakan kaedah cheerio untuk mencetak HTML dalaman senarai. $

var request = require("request");

request({
  uri: "http://www.sitepoint.com",
}, function(error, response, body) {
  console.log(body);
});
Salin selepas log masuk
Salin selepas log masuk

Had

berada di bawah pembangunan aktif dan sentiasa bertambah baik. Walau bagaimanapun, ia masih mempunyai beberapa batasan. cheerio Aspek yang paling mengecewakan ialah parser HTML. Parsing HTML adalah masalah yang sukar, dan terdapat banyak laman web yang mengandungi HTML yang buruk. Walaupun cheerio tidak akan terhempas di halaman ini, anda mungkin mendapati diri anda tidak dapat memilih elemen. Ini menjadikan sukar untuk menentukan sama ada ralat adalah pemilih atau halaman itu sendiri. cheerio

Crawl Jspro

Contoh berikut menggabungkan

dan request untuk membina crawler web yang lengkap. Contoh crawler ini mengekstrak tajuk dan URL semua artikel di laman utama JSPRO. Dua baris pertama mengimport modul yang diperlukan ke dalam contoh. Muat turun kod sumber laman utama JSPRO dari baris 3 hingga 5. Kemudian lulus kod sumber ke cheerio untuk parsing. cheerio

npm install cheerio
Salin selepas log masuk
Salin selepas log masuk
Jika anda melihat kod sumber JSPRO, anda akan melihat bahawa setiap tajuk pos adalah pautan yang terkandung dalam elemen

dengan kelas entry-title. Pemilih dalam baris 7 memilih semua pautan artikel. Kemudian gunakan fungsi <a></a> untuk melangkah melalui semua artikel. Akhirnya, tajuk artikel dan URL diperolehi dari teks pautan dan each() sifat, masing -masing. href

Kesimpulan

Artikel ini menunjukkan kepada anda cara membuat crawler web yang mudah di Node.js. Perhatikan bahawa ini bukan satu -satunya cara untuk merangkak halaman web. Terdapat teknologi lain, seperti menggunakan pelayar tanpa kepala, yang lebih berkuasa tetapi boleh menjejaskan kesederhanaan dan/atau kelajuan. Sila ikuti artikel yang akan datang mengenai penyemak imbas tanpa kepala Phantomjs.

node.js Web Crawling FAQ (FAQ)

Bagaimana menangani kandungan dinamik dalam merangkak web Node.js?

Mengendalikan kandungan dinamik dalam node.js boleh menjadi agak rumit kerana kandungan dimuatkan secara asynchronously. Anda boleh menggunakan perpustakaan seperti dalang, yang merupakan perpustakaan node.js yang menyediakan API peringkat tinggi untuk mengawal krom atau kromium melalui protokol DevTools. Puppeteer berjalan dalam mod tanpa kepala secara lalai, tetapi boleh dikonfigurasikan untuk menjalankan krom atau kromium penuh (tidak berkepala) atau kromium. Ini membolehkan anda merangkak kandungan dinamik dengan mensimulasikan interaksi pengguna.

Bagaimana untuk mengelakkan diharamkan apabila merangkak laman web?

Jika laman web mengesan lalu lintas yang tidak normal, perayap web kadang -kadang boleh menyebabkan IP anda diharamkan. Untuk mengelakkan ini, anda boleh menggunakan teknik seperti berputar alamat IP anda, menggunakan kelewatan, dan juga menggunakan API merangkak yang secara automatik mengendalikan isu -isu ini.

Bagaimana untuk merangkak data dari laman web yang anda perlukan untuk log masuk?

Untuk merangkak data dari laman web yang anda perlukan untuk log masuk, anda boleh menggunakan dalang. Puppeteer boleh mensimulasikan proses log masuk dengan mengisi borang log masuk dan menyerahkannya. Sebaik sahaja log masuk, anda boleh menavigasi ke halaman yang anda mahu dan merangkak data.

Bagaimana untuk menyimpan data merangkak ke pangkalan data?

Selepas merangkak data, anda boleh menggunakan klien pangkalan data pangkalan data pilihan anda. Sebagai contoh, jika anda menggunakan MongoDB, anda boleh menggunakan klien MongoDB Node.js untuk menyambung ke pangkalan data anda dan simpan data.

Bagaimana untuk merangkak data dari laman web dengan paging?

Untuk merangkak data dari laman web dengan paging, anda boleh menggunakan gelung untuk melayari halaman. Dalam setiap lelaran, anda boleh merangkak data dari halaman semasa dan klik butang halaman seterusnya untuk menavigasi ke halaman seterusnya.

Bagaimana untuk merangkak data dari laman web dengan menatal tak terhingga?

Untuk merangkak data dari laman web dengan menatal tak terhingga, anda boleh menggunakan dalang untuk mensimulasikan menatal ke bawah. Anda boleh menggunakan gelung untuk menatal ke bawah secara berterusan sehingga data baru tidak lagi dimuatkan.

Bagaimana menangani kesilapan dalam merangkak web?

Pengendalian ralat adalah penting dalam merangkak web. Anda boleh menggunakan blok percubaan untuk mengendalikan kesilapan. Di blok tangkapan, anda boleh log mesej ralat, yang akan membantu anda menyahpepijat masalah.

Bagaimana untuk merangkak data dari laman web menggunakan AJAX?

untuk merangkak data dari laman web yang menggunakan Ajax, anda boleh menggunakan dalang. Puppeteer boleh menunggu panggilan Ajax diselesaikan dan kemudian ambil data.

Bagaimana untuk mempercepatkan web merangkak di node.js?

Untuk mempercepatkan web merangkak, anda boleh menggunakan teknik seperti pemprosesan selari untuk membuka beberapa halaman dalam tab yang berbeza dan ambil data dari mereka pada masa yang sama. Walau bagaimanapun, berhati -hati untuk tidak membebankan laman web dengan terlalu banyak permintaan kerana ini boleh menyebabkan IP anda diharamkan.

Bagaimana untuk merangkak data dari laman web menggunakan CAPTCHA?

merangkak data dari laman web yang menggunakan CAPTCHA boleh mencabar. Anda boleh menggunakan perkhidmatan seperti 2Captcha, yang menyediakan API untuk menyelesaikan Captcha. Walau bagaimanapun, ingat bahawa dalam beberapa kes, ini boleh menjadi haram atau tidak bermoral. Sentiasa menghormati syarat perkhidmatan laman web.

Atas ialah kandungan terperinci Mengikis web di node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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