0x00
Web crawler (juga dikenal sebagai web spider, web bot, lebih sering disebut web chaser di komunitas FOAF) adalah program atau skrip yang secara otomatis mengikis informasi tentang World Wide Web sesuai dengan aturan tertentu. Nama lain yang kurang umum digunakan termasuk semut, indeks otomatis, simulator, atau cacing.
0x01
Sederhananya, perayap mengambil data sesuai dengan aturan mereka sendiri, menganalisis data yang diambil, dan kemudian mendapatkan data yang berguna untuk diri mereka sendiri.
0x02
Pengoptimalan perayap web dapat dibagi menjadi dua tahap:
1: Optimalkan saat mengikis data;
2: Optimalkan pemrosesan hasil pemegang;
Hari ini, kita hanya berbicara tentang pengoptimalan dalam proses pengikisan!
0x03
Saya telah merangkum beberapa poin tentang pengoptimalan dalam proses crawling:
1: Dapat dioptimalkan pada alamat fisik, misalnya: server sumber daya target adalah host Tencent Cloud di Shanghai, kami mencoba memilih server di wilayah yang sama, yaitu server di wilayah Shanghai, jangan memilih server di Beijing, Qingdao dan wilayah lain, tetapi juga mencoba memilih server di ruang komputer IDC yang sama, kami tahu bahwa situs web sumber daya ini adalah server Tencent Cloud, kami mencoba menempatkan crawler di server Tencent Cloud, bukan di server Alibaba Cloud!
2: Pilih jaringan yang stabil dan cepat, umumnya crawler memiliki persyaratan kualitas jaringan yang tinggi, usahakan untuk tidak menggunakan jaringan rumah, pilih jaringan perusahaan atau beli server untuk menangkap data.
3: Pilih bahasa perayap yang lebih efisien, saya mendengar bahwa python lebih baik dalam perayap, tetapi saya belum menggunakannya, dan saya akan mengujinya nanti, hari ini, saya terutama menjelaskannya dalam bahasa .net.
0x04
Untuk hal-hal seperti pembelian terburu-buru, persyaratan untuk kecepatan pengambilan tinggi, dapat digambarkan sebagai masalah waktu, lebih awal untuk mendapatkan data, meningkatkan peluang untuk mengambil, berikut ini adalah saya menulis demo dengan konsol, tes pengambilan data situs web ini, seperti yang ditunjukkan pada gambar di bawah ini:
(Semakin pendek waktunya, semakin cepat)
Peringkat data di atas:1: Kode yang dioptimalkan secara asli, 2: Kode asli, 3: DLL (paket) plug-in pihak ketiga
0x05
Mengapa plugin (paket) pihak ketiga memakan waktu paling lama? Plug-in pihak ketiga sebenarnya adalah sejumlah besar enkapsulasi kode asli, sejumlah besar penilaian logis, dan relatif serbaguna, yang dapat menyebabkan kecepatan perayapan yang lambat.
Berikut kode aslinya:
Kode asli hanya beberapa baris di atas.Waktu rata-rata masih 184 milidetik,Semakin sederhana kodenya, semakin sulit untuk dioptimalkanApakah Anda merasa bahwa bagaimana kode di atas dapat dioptimalkan untuk mencapai waktu rata-rata 99 milidetik?Perbedaan kecepatan dua kali lipat!
0x06
Jika server sumber daya target mendukung kompresi gzip, ketika kita mengakses situs web dan browser meminta situs web, header permintaan akan memiliki parameter berikut:
Parameter Header Respons:
Pengantar "Accept-Encoding": https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
Dalam istilah awam:
Klien mengatakan:Saya mendukung algoritma kompresi "gzip, deflate, sdch, br", Anda dapat menggunakan apa pun yang Anda inginkan saat mengembalikan data.
Server berkata:Saya kebetulan mendukung algoritma kompresi gzip, jadi saya akan menggunakan algoritma gzip untuk mengompres data kepada Anda
Klien mengatakan:Oke, maka saya akan mendekripsi data yang diterima dengan algoritma gzip
algoritma gzip, yang dapat mengompres data yang dikirimkan dan sangat mengurangi konten yang dikirimkan, sehingga efisiensi permintaan akan ditingkatkan, sehingga kode yang dioptimalkan adalah sebagai berikut:
Meskipun ini adalah detail kecil, efisiensinya bisa dikatakan dua kali lipat! Ini setara dengan data yang Anda kumpulkan dalam dua hari, dan sekarang dapat dikumpulkan dalam 1 hari, dan artikel ini didedikasikan untuk teman-teman yang belajar merangkak.
Catatan: Algoritma kompresi gzip tidak ada hubungannya dengan bahasa pemrograman!
Terakhir, lampirkan kode sumber:
Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakan Jawab
|