Jadual Kandungan
1. Cabaran data web dinamik merangkak
2. Penyelesaian: Jalankan JavaScript dengan pakej V8
3. Kes Praktikal: merangkak data kebangsaan dari laman web FATF
3.1 Kenal pasti sumber data
3.2 Langkah Pelaksanaan dan Contoh Kod
3.3 Penjelasan kod
4. Langkah berjaga -jaga dan ringkasan
Rumah hujung hadapan web html tutorial CRAWLING WEB LANGUS

CRAWLING WEB LANGUS

Aug 08, 2025 pm 08:51 PM

R Bahasa Advanced Web Crawling: Pemprosesan Data Dimuat secara dinamik oleh JavaScript

Artikel ini bertujuan untuk mengajar cara menggunakan bahasa R untuk memproses data laman web yang dimuat secara dinamik melalui JavaScript. Sebagai tindak balas kepada cabaran yang merangkak web tradisional seperti XML atau RVEST tidak dapat secara langsung memperoleh data tersebut, artikel itu akan memperkenalkan secara terperinci bagaimana untuk mensimulasikan persekitaran pelaksanaan JavaScript menggunakan pakej V8 untuk mengekstrak data yang diperlukan secara langsung dari fail JavaScript. Melalui kes tertentu, kami akan menunjukkan cara mengenal pasti sumber data, mendapatkan kandungan JavaScript, menjalankan kod JavaScript dalam persekitaran R, dan membersihkan dan menyusun data yang diekstrak, untuk mendapatkan maklumat laman web yang dihasilkan secara dinamik dan tepat.

1. Cabaran data web dinamik merangkak

Dalam pengikis data web (mengikis web), kita sering menghadapi situasi di mana data tidak tertanam secara langsung dalam struktur HTML, tetapi secara dinamik dihasilkan melalui JavaScript. Pakej tradisional R, seperti XML atau RVEST, bergantung terutamanya pada kandungan HTML statik parsing. Apabila data sasaran diminta oleh JavaScript (AJAX) atau terus tertanam dalam pembolehubah JavaScript, alat -alat ini sering gagal untuk mendapatkan maklumat yang diperlukan secara langsung.

Mengambil contoh merangkak senarai negara dari https://www.fatf-gafi.org/countries/ laman web sebagai percubaan awal untuk menggunakan xml :: htmlParse mungkin tidak dapat memperoleh data negara yang dijangkakan, Dalam kes ini, kita memerlukan penyelesaian yang dapat melaksanakan kod JavaScript dan mengakses pembolehubah dalamannya.

2. Penyelesaian: Jalankan JavaScript dengan pakej V8

Pakej V8 bahasa R menyediakan enjin JavaScript dan webassembly tertanam, yang membolehkan kami melaksanakan kod JavaScript dalam persekitaran R dan berinteraksi dengan persekitaran runtime JavaScript. Ini bermakna kita boleh memuatkan fail JavaScript yang digunakan di laman web, melaksanakan kod di dalamnya, dan kemudian mengeluarkan nilai pembolehubah yang ditakrifkan dalam JavaScript.

Idea Teras:

  1. Kenal pasti sumber data JavaScript: Semak sumber yang diminta semasa memuatkan laman web, terutamanya fail .js, melalui alat pemaju pelayar (tab rangkaian/rangkaian), dan cari fail JavaScript yang mungkin mengandungi data sasaran.
  2. Dapatkan Kandungan JavaScript: Gunakan pakej HTTR untuk memuat turun kandungan fail JavaScript.
  3. Inisialisasi enjin V8: Buat konteks V8.
  4. Jalankan Kod JavaScript: Laksanakan kandungan JavaScript yang dimuat turun dalam konteks V8.
  5. Ekstrak Pembolehubah: Dapatkan nilai pembolehubah JavaScript dari konteks V8.
  6. Pembersihan Data: Melakukan penukaran format yang diperlukan dan pembersihan data yang diekstrak.

3. Kes Praktikal: merangkak data kebangsaan dari laman web FATF

Kami akan menggunakan laman web FATF (Pasukan Petugas Tindakan Kewangan) sebagai contoh untuk menunjukkan cara merangkak senarai negara.

3.1 Kenal pasti sumber data

Dengan melawat https://www.fatf-gafi.org/countries/ dan membuka alat pemaju penyemak imbas, dalam tab "rangkaian" atau "rangkaian", kita dapat melihat bahawa fail JavaScript bernama negara-data-multi-lang.js akan diminta semasa proses pemuatan halaman. Telah terbukti bahawa fail ini mengandungi semua data negara yang kita perlukan, dan wujud dalam pembolehubah array JavaScript yang dipanggil negara.

URL penuh fail JavaScript biasanya: https://www.fatf-gafi.org/media/fatf/fatfv20/js/country-data-multi-lang.js.

3.2 Langkah Pelaksanaan dan Contoh Kod

Pertama, pastikan anda telah memasang pakej R yang diperlukan: HTTR, V8, DPLYR, dan Tidyr.

 # Muatkan perpustakaan perpustakaan yang diperlukan (HTTR) # digunakan untuk menghantar Perpustakaan Permintaan HTTP (V8) # digunakan untuk melaksanakan JavaScript
Perpustakaan (Dplyr) # Untuk Perpustakaan Operasi Data (Tidyr) # Untuk penyortiran data, terutamanya fungsi Uncest # 1. Tentukan URL Fail Data JavaScript
js_url  %
  UNDEST (cols = c (kumpulan)) %> % # memperluaskan lajur 'kumpulan' bersarang pilih (c (1: 2, 4:14, 16)) %> % # pilih lajur tertentu yang mengandungi nama negara, kod dan penapis maklumat organisasi yang berkaitan (!
# str (final_country_data) # Lihat struktur data

3.3 Penjelasan kod

  • http :: get () dan kandungan () : Digunakan untuk memulakan permintaan HTTP dan dapatkan kandungan respons. Parameter 'teks' memastikan bahawa kandungan itu dihuraikan ke dalam rentetan.
  • V8 () : Mewujudkan contoh enjin V8, yang menyediakan persekitaran JavaScript yang berdiri sendiri.
  • CT $ EVAL (JS_Content) : Ini adalah langkah teras. Ia akan melaksanakan kod JavaScript yang dimuat turun dari laman web dalam enjin V8. Selepas pelaksanaan, mana -mana pembolehubah global yang ditakrifkan dalam kod JavaScript ini (seperti negara dalam kes ini) boleh diakses dalam R.
  • CT $ GET ("Negara") : Ekstrak nilai pembolehubah JavaScript bernama negara dari enjin V8. Pakej V8 secara automatik akan menukarnya ke struktur data yang sepadan dalam R (biasanya senarai atau bingkai data).
  • Unsnest (cols = c (kumpulan)) : diperhatikan bahawa dalam bingkai data yang dikembalikan oleh CT $ GET ("Negara") terdapat lajur bernama kumpulan, di dalamnya adalah senarai bersarang atau bingkai data. Fungsi unnest () (dari pakej Tidyr) digunakan untuk mengembangkan struktur bersarang ini ke dalam lajur rata, menjadikan data lebih mudah untuk dianalisis.
  • Pilih (C (1: 2, 4:14, 16)) : Selepas operasi yang tidak jelas, bingkai data mungkin mengandungi lajur atau lajur yang berlebihan yang perlu disusun semula. Di sini kami memilih lajur yang anda perlukan mengikut indeks lajur. Dalam aplikasi praktikal, disyorkan untuk mencetak nama (final_country_data) atau gunakan GLIMPSE () untuk melihat semua nama lajur, dan kemudian pilih dengan nama untuk meningkatkan kebolehbacaan dan keteguhan kod.
  • penapis (! is.na (nama)) : penapis baris yang lajur namanya adalah Na (nilai yang tidak dijawab). Dalam beberapa sumber data, mungkin terdapat baris kosong diisi pada akhir, yang boleh dibersihkan dengan cara ini.

4. Langkah berjaga -jaga dan ringkasan

  • JavaScript Sumber Positioning: Mencari fail JavaScript yang betul adalah kunci. Mahir dalam menggunakan alat pemaju penyemak imbas (terutamanya rangkaian rangkaian/rangkaian dan sumber/sumber) adalah kemahiran yang mesti dimiliki.
  • Eksplorasi Struktur Data: Data yang diambil dari V8 boleh menjadi senarai bersarang yang kompleks. Gunakan str (), nama (), sekilas () dan fungsi lain untuk meneroka strukturnya supaya pembersihan data digunakan dengan betul oleh fungsi seperti unnest (), pilih () dan fungsi lain.
  • Kerumitan kandungan dinamik: Tidak semua kandungan dinamik boleh diekstrak secara langsung melalui V8. Jika data dimuatkan melalui operasi DOM kompleks, interaksi pengguna atau penyulitan, alat yang lebih maju seperti selenium dan pelayar tanpa kepala mungkin diperlukan untuk simulasi. Tetapi untuk kes di mana data wujud secara langsung dalam pembolehubah JavaScript, V8 adalah pilihan yang ringan dan cekap.
  • Dasar Laman Web: Sebelum menjalankan sebarang aktiviti merangkak web, pastikan anda menyemak fail robots.txt laman web dan terma penggunaan untuk memastikan tingkah laku anda mematuhi peraturan laman web.

Melalui kajian artikel ini, anda harus dapat menguasai kaedah asas menggunakan pakej bahasa R V8 untuk mengendalikan data pemuatan dinamik JavaScript. Teknologi ini sangat memperluaskan keupayaan R untuk merangkak data laman web, yang membolehkannya mengatasi struktur web moden yang lebih kompleks.

Atas ialah kandungan terperinci CRAWLING WEB LANGUS. 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

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

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.

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 PHP
1592
276
Apakah atribut nama dalam tag input? Apakah atribut nama dalam tag input? Jul 27, 2025 am 04:14 AM

Thenameattributeinaninputtagisusedtoidentifytheinputwhentheformissubmitted;itservesasthekeyinthekey-valuepairsenttotheserver,wheretheuser'sinputisthevalue.1.Whenaformissubmitted,thenameattributebecomesthekeyandtheinputvaluebecomesthevalueinthedatasen

Tag html penting untuk pemula Tag html penting untuk pemula Jul 27, 2025 am 03:45 AM

Untuk memulakan dengan HTML dengan cepat, anda hanya perlu menguasai beberapa tag asas untuk membina rangka web. 1. Struktur halaman adalah penting, dan, yang merupakan elemen akar, mengandungi maklumat meta, dan merupakan kawasan paparan kandungan. 2. Gunakan tajuk. Semakin tinggi tahap, semakin kecil nombor. Gunakan tag untuk segmen teks untuk mengelakkan melangkau tahap. 3. Pautan menggunakan tag dan sepadan dengan atribut HREF, dan imej menggunakan tag dan mengandungi atribut SRC dan ALT. 4. Senarai ini dibahagikan kepada senarai yang tidak teratur dan senarai yang diperintahkan. Setiap entri diwakili dan mesti bersarang dalam senarai. 5. Pemula tidak perlu memaksa menghafal semua tag. Lebih cekap untuk menulis dan memeriksa mereka semasa anda menulis. Menguasai struktur, teks, pautan, gambar dan senarai untuk membuat laman web asas.

Bolehkah anda meletakkan tag  di dalam tag  yang lain? Bolehkah anda meletakkan tag di dalam tag yang lain? Jul 27, 2025 am 04:15 AM

❌youcannotnesttagsinsideanothertagbecauseit'sinvalidhtml; browsersautomomatikclosethefirstbeforeopeningthenext, drectinginseparateParagraphs.instead, useinlineelements,

Bagaimana untuk membenamkan dokumen PDF dalam HTML? Bagaimana untuk membenamkan dokumen PDF dalam HTML? Aug 01, 2025 am 06:52 AM

Menggunakan tag adalah kaedah yang paling mudah dan disyorkan. Sintaks ini sesuai untuk pelayar moden untuk membenamkan PDF secara langsung; 2. Menggunakan tag boleh memberikan sokongan kandungan kawalan dan sandaran yang lebih baik, sintaks adalah, dan menyediakan pautan muat turun dalam tag sebagai penyelesaian sandaran apabila mereka tidak disokong; 3. Ia boleh tertanam melalui Google Docsviewer, tetapi tidak disyorkan untuk digunakan secara meluas kerana isu privasi dan prestasi; 4. Untuk meningkatkan pengalaman pengguna, ketinggian yang sesuai harus ditetapkan, saiz responsif (seperti ketinggian: 80VH) dan pautan muat turun PDF harus disediakan supaya pengguna dapat memuat turun dan melihatnya sendiri.

Bagaimana untuk membuat senarai yang tidak teratur dalam HTML? Bagaimana untuk membuat senarai yang tidak teratur dalam HTML? Jul 30, 2025 am 04:50 AM

Untuk membuat senarai HTML yang tidak teratur, anda perlu menggunakan tag untuk menentukan bekas senarai. Setiap item senarai dibalut dengan tag, dan penyemak imbas secara automatik akan menambah peluru; 1. Buat senarai dengan tag; 2. Setiap item senarai ditakrifkan dengan tag; 3. Penyemak imbas secara automatik menjana simbol titik lalai; 4. Sublists boleh dilaksanakan melalui bersarang; 5. Gunakan atribut jenis gaya CSS untuk mengubah suai gaya simbol, seperti cakera, bulatan, persegi, atau tidak; Gunakan tag ini dengan betul untuk menghasilkan senarai yang tidak teratur standard.

Bagaimana untuk menggunakan atribut contentedable? Bagaimana untuk menggunakan atribut contentedable? Jul 28, 2025 am 02:24 AM

TheContentititableatTributeMakesanyhtmleLementedByDdingContentedied boleh

Cara menambah ikon ke tab tajuk laman web anda di HTML Cara menambah ikon ke tab tajuk laman web anda di HTML Aug 07, 2025 pm 11:30 PM

Untuk menambah ikon ke bar tajuk laman web, anda perlu menghubungkan fail Favicon di bahagian HTML. Langkah -langkah khusus adalah seperti berikut: 1. Sediakan fail ikon 16x16 atau 32x32 piksel. Adalah disyorkan untuk menggunakan favicon.ico untuk menamakannya dan meletakkannya di direktori akar laman web, atau menggunakan format moden seperti PNG dan SVG; 2. Tambah tag pautan ke HTML, seperti format PNG atau SVG, laraskan atribut jenis dengan sewajarnya; 3. Secara pilihan menambah ikon resolusi tinggi untuk peranti mudah alih, seperti Appletouchicon, dan nyatakan saiz yang berbeza melalui atribut saiz; 4. Ikuti amalan terbaik, letakkan ikon dalam direktori root untuk memastikan pengesanan automatik, jelaskan cache penyemak imbas selepas kemas kini, dan periksa ketepatan laluan fail.

Menggunakan jenis html `input` untuk data pengguna Menggunakan jenis html `input` untuk data pengguna Aug 03, 2025 am 11:07 AM

Memilih jenis htmlinput yang betul dapat meningkatkan ketepatan data, meningkatkan pengalaman pengguna, dan meningkatkan kebolehgunaan. 1. Pilih jenis input yang sepadan mengikut jenis data, seperti teks, e -mel, tel, nombor dan tarikh, yang secara automatik boleh menyemak dan menyesuaikan diri dengan papan kekunci; 2. Gunakan HTML5 untuk menambah jenis baru seperti URL, Warna, Julat dan Carian, yang dapat memberikan kaedah interaksi yang lebih intuitif; 3. Gunakan pemegang tempat dan sifat -sifat yang diperlukan untuk meningkatkan kecekapan dan ketepatan pengisian bentuk, tetapi harus diperhatikan bahawa pemegang tempat tidak dapat menggantikan label.

See all articles