redis - 爬虫如何保存已经访问过的url
大家讲道理
大家讲道理 2017-04-21 10:57:04
0
6
857

话说同志们在爬取数据的时候如何保存已经访问过的url和队列?对于爬取过的url,我使用redis的set来保存,访问队列是用list来保存,数据量是直线上升,内存不大,也只有4g,扛不住。不知道以前的方法是什么?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(6)
左手右手慢动作

Saya menggunakan MySQL untuk beratur dan menentukan sama ada untuk mengakses Memandangkan ciri-ciri kegigihan Redis tidak begitu baik, dan saya tidak terfikir untuk menggunakan Redis atau apa-apa lagi pada masa itu, tiada masalah untuk menggunakan MySQL untuk. pada masa ini.
Kaedah khusus adalah untuk mengindeks nilai md5 URL secara unik Setiap pertanyaan adalah pantas dan struktur jadual adalah mudah.
Baris gilir menggunakan bentuk carian jadual dan SQL adalah seperti berikut (status khusus mewakili beberapa status yang ditentukan sendiri):
pilih * daripada t_down_task di mana status = 0 pesanan mengikut had id 1;
Padamkan tugasan yang telah selesai dengan kerap

刘奇

http://ms.wikipedia.org/wiki/Bloom_fi...

Memori 4G boleh membuka BloomFilter yang sangat besar Setiap URL hanya memerlukan beberapa bit, tanpa mengira panjang URL. BloomFilter mempunyai kadar ralat tertentu (seperti seperseribu atau satu peratus, bergantung pada konfigurasi), yang akan menyebabkan beberapa halaman web terlepas, tetapi tidak akan dirangkak berulang kali.

Jika memori 4G tidak mencukupi untuk membuka BloomFilter, penulis perlu mempertimbangkan cara menyimpan halaman web yang dirangkak.

左手右手慢动作

Apabila jumlah data tidak terlalu besar, storan cincang md5 dalam storan KV agak boleh dipercayai Jika jumlah indeks adalah besar, ia mungkin tidak mencukupi, jadi beberapa algoritma khas dengan pemampatan ruang mesti digunakan, seperti. Penapis bloom yang disebutkan di atas

Sesetengah orang juga telah melaksanakan storan algoritma ini menggunakan protokol Memcache, http://code.google.com/p/mc-bloom-fil...

巴扎黑

Sesetengah pangkalan data k/v yang berterusan boleh dipertimbangkan, dan saya mengesyorkan menggunakan leveldb.

左手右手慢动作

Jangan gunakan redis untuk melakukan ini, hanya gunakan sistem fail secara langsung

URL yang dikumpul ditukar kepada rentetan perenambelasan melalui MD5, dan kemudian setiap 4 aksara digunakan sebagai direktori, dan 4 aksara terakhir digunakan sebagai nama fail Kandungan fail boleh kosong

Untuk menentukan sama ada URL telah dikumpulkan, MD5 terus URL semasa, jana laluan fail mengikut peraturan di atas dan tentukan terus sama ada laluan fail itu wujud.

巴扎黑

Penapis mekar teratas. Ia boleh digunakan seperti ini: gunakan leveldb untuk menyimpan URL, dan kemudian gunakan bloomfilter untuk menyekat kebanyakan URL yang tiada dalam pustaka semasa membuat pertanyaan. Ini sepatutnya hampir sama.
Berapa banyak URL yang lz perlu merangkak? Jika terdapat banyak URL, seperti ratusan juta, dan jika anda mempunyai Hadoop, anda juga boleh menggunakan Hadoop untuk menyahduplikasi URL baharu dan URL lama MapReduce sangat pantas

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan