Jadual Kandungan
Bagaimana untuk merangkak data dari laman web dengan paging?
Bagaimana untuk merangkak data dari laman web dengan menatal tak terhingga?
Bagaimana menangani kesilapan dalam merangkak web?
Bagaimana untuk merangkak data dari laman web menggunakan AJAX?
Bagaimana untuk mempercepatkan web merangkak di node.js?
Bagaimana untuk merangkak data dari laman web menggunakan CAPTCHA?
Rumah hujung hadapan web tutorial js Mengikis web di node.js

Mengikis web di node.js

Feb 24, 2025 am 08:53 AM

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1662
14
Tutorial PHP
1262
29
Tutorial C#
1235
24
Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Evolusi JavaScript: Trend Semasa dan Prospek Masa Depan Apr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

JavaScript: meneroka serba boleh bahasa web JavaScript: meneroka serba boleh bahasa web Apr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

See all articles