Apache Nutch Crawl Script : Web Crawling hanya dengan Satu Command
Pada artikel Membangun Mesin Pencari dengan Kombinasi Apache Nutch, Elasticsearch, dan MongoDB telah dibahas secara singkat tentang apa itu Apache Nutch, apa itu Elasticsearch, dan Apa itu MongoDB.
Kemudian, pada artikel Crawling dan Indexing Berbasis Apache Nutch, Elasticsearch, dan MongoDB telah dijelaskan langkah-langkah website crawling menggunakan Apache Nutch yang meliputi 6 tahap dengan mengeksekusi 6 command Apache Nutch, yaitu: inject, generate, fetch, parse, updatedb, index. Telah disebutkan pula bahwa proses crawling yang meliputi 6 langkah ini tidak cukup hanya dilakukan satu kali untuk dapat meng-index seluruh isi website yang dijadikan target.
Beruntungnya, Apache Nutch juga dilengkapi dengan script yang dapat mempersingkat proses crawling dari 6 langkah menjadi satu langkah saja, yaitu dengan mengeksekusi perintah berikut:
Adapun arguments dari perintah diatas adalah:
Jadi, syntax dari perintah/command untuk menjalankan scrpit crawling adalah:
Berikut adalah contoh eksekusi perintah crawling dengan menggunakan script crawl bawaan Apache Nutch:
Demikian, proses crawling yang sejatinya terdiri atas 6 langkah, harus mengeksekusi 6 perintah secara berurutan ( inject, generate, fetch, parse, updatedb, index ), kini dapat dilakukan hanya dengan mengeksekusi satu perintah dengan menggunakan crawl script bawaan Apache Nutch.
Setelah proses crawling selesai, yakni data hasil crawling telah disimpan dan di-index, selanjutnya data tersebut dapat divisualisasikan menggunakan Kibana. Langkah-langkahnya sama dengan yang telah dijelaskan pada artikel (Crawling dan Indexing Berbasis Apache Nutch, Elasticsearch, dan MongoDB).
Ingat: apache-nutch-2.3.1 TIDAK kompatibel dengan elasticsearch-2.3.3 Kompatibilitas yang telah dikonfirmasi adalah apache-nutch-2.3.1 + elasticsearch-1.4.4 + kibana-4.1.8 + mongodb-3.2.1
Pada pengaturan default, links yang mengandung parameter query akan tidak dihiraukan atau disaring dan dibuang. Untuk dapat melakukan crawling terhadap urls yang mengandung parameter query, silakan lakukan pengaturan pada file conf/regex-urlfilter.txt dan tambahkan # pada permulaan setiap garis untuk menyatakan isi baris tersebut sebagai comment.
Selamat Mencoba!
Kemudian, pada artikel Crawling dan Indexing Berbasis Apache Nutch, Elasticsearch, dan MongoDB telah dijelaskan langkah-langkah website crawling menggunakan Apache Nutch yang meliputi 6 tahap dengan mengeksekusi 6 command Apache Nutch, yaitu: inject, generate, fetch, parse, updatedb, index. Telah disebutkan pula bahwa proses crawling yang meliputi 6 langkah ini tidak cukup hanya dilakukan satu kali untuk dapat meng-index seluruh isi website yang dijadikan target.
Beruntungnya, Apache Nutch juga dilengkapi dengan script yang dapat mempersingkat proses crawling dari 6 langkah menjadi satu langkah saja, yaitu dengan mengeksekusi perintah berikut:
hennywijaya$ runtime/local/bin/crawl urls/ webpage3 http://localhost:9300/nutch/ 3
Adapun arguments dari perintah diatas adalah:
1. urls adalah directory urls, yang berisi file seeds.txt.
2. webpage3 adalah crawling id, yang dapat berupa sembarang teks. Crawling id ini akan digunakan sebagai nama collection di database MongoDB yang memuat data hasil crawling.
3. http://localhost:9300/nutch/ adalah url yang menunjuk alamat server Elasticsearch dengan nomor port 9300 (BUKAN 9200), yang diikuti dengan nama index seperti yang tercantum pada file konfigurasi nutch-site.xml (dalam hal ini nama index-nya adalah nutch).
4. Angka 3 menunjukkan kedalaman crawling, yaitu berapa kali crawler tersebut harus mengulangi proses crawling terhadap website yang dijadikan target.
2. webpage3 adalah crawling id, yang dapat berupa sembarang teks. Crawling id ini akan digunakan sebagai nama collection di database MongoDB yang memuat data hasil crawling.
3. http://localhost:9300/nutch/ adalah url yang menunjuk alamat server Elasticsearch dengan nomor port 9300 (BUKAN 9200), yang diikuti dengan nama index seperti yang tercantum pada file konfigurasi nutch-site.xml (dalam hal ini nama index-nya adalah nutch).
4. Angka 3 menunjukkan kedalaman crawling, yaitu berapa kali crawler tersebut harus mengulangi proses crawling terhadap website yang dijadikan target.
Jadi, syntax dari perintah/command untuk menjalankan scrpit crawling adalah:
bin/crawl <urls directory> <crawling id> <the url to the elasticsearch server with index name> <crawling depth>
Hennys-MacBook-Pro:apache-nutch-2.3.1 hennywijaya$ runtime/local/bin/crawl urls/ webpage7 http://localhost:9300/nutch/ 7 Injecting seed URLs /Users/hennywijaya/nutch/apache-nutch-2.3.1/runtime/local/bin/nutch inject urls/ -crawlId webpage7 InjectorJob: starting at 2016-07-07 18:04:59 InjectorJob: Injecting urlDir: urls InjectorJob: Using class org.apache.gora.mongodb.store.MongoStore as the Gora storage class. InjectorJob: total number of urls rejected by filters: 1 InjectorJob: total number of urls injected after normalization and filtering: 2 Injector: finished at 2016-07-07 18:06:19, elapsed: 00:01:20 Thu Jul 7 18:06:19 JST 2016 : Iteration 1 of 7 Generating batchId Generating a new fetchlist /Users/hennywijaya/nutch/apache-nutch-2.3.1/runtime/local/bin/nutch generate -D mapred.reduce.tasks=2 -D mapred.child.java.opts=-Xmx1000m -D mapred.reduce.tasks.speculative.execution=false -D mapred.map.tasks.speculative.execution=false -D mapred.compress.map.output=true -topN 50000 -noNorm -noFilter -adddays 0 -crawlId webpage7 -batchId 1467882379-31716 GeneratorJob: starting at 2016-07-07 18:06:21 GeneratorJob: Selecting best-scoring urls due for fetch. GeneratorJob: starting GeneratorJob: filtering: false GeneratorJob: normalizing: false GeneratorJob: topN: 50000 GeneratorJob: finished at 2016-07-07 18:06:31, time elapsed: 00:00:10 GeneratorJob: generated batch id: 1467882379-31716 containing 4272 URLs Fetching : /Users/hennywijaya/nutch/apache-nutch-2.3.1/runtime/local/bin/nutch fetch -D mapred.reduce.tasks=2 -D mapred.child.java.opts=-Xmx1000m -D mapred.reduce.tasks.speculative.execution=false -D mapred.map.tasks.speculative.execution=false -D mapred.compress.map.output=true -D fetcher.timelimit.mins=180 1467882379-31716 -crawlId webpage7 -threads 50 FetcherJob: starting at 2016-07-07 18:06:32 FetcherJob: batchId: 1467882379-31716 FetcherJob: threads: 50 FetcherJob: parsing: false FetcherJob: resuming: false FetcherJob : timelimit set for : 1467893192722 Using queue mode : byHost Fetcher: threads: 50 fetching http://images.detik.com/community/media/visual/2016/07/06/79502271-1ad6-4dca-8580-1093d1064e2d_43.jpg?w=350&q= (queue crawl delay=5000ms) fetching http://food.detik.com/read/2016/07/06/122330/3248879/900/ini-trik-makan-enak-dan-sehat-saat-lebaran?mpfood (queue crawl delay=5000ms) fetching http://sport.detik.com/sepakbola/ (queue crawl delay=5000ms) fetching https://www.airbnb.com/s/Hawaii--United-States?type=villa (queue crawl delay=5000ms) fetching http://oto.detik.com/indeks?otindeks (queue crawl delay=5000ms) Fetcher: throughput threshold: -1 Fetcher: throughput threshold sequence: 5 fetching http://inet.detik.com/read/2016/07/06/123239/3248882/317/mau-jadi-premium-harga-xiaomi-tak-murah-lagi?mpinet (queue crawl delay=5000ms) fetching http://apps.detik.com/ (queue crawl delay=5000ms) fetching http://post.detik.com/formv1/js/actScript.php?id=298 (queue crawl delay=5000ms) fetching http://wolipop.detik.com/mostpopular?utm_source=wp&utm_medium=nav%20more&utm_campaign=most%20popular/mostpopular (queue crawl delay=5000ms) fetching http://detik.com/dapur/beriklan (queue crawl delay=5000ms) fetching http://jalurmudik.detik.com/ (queue crawl delay=5000ms) fetching http://finance.detik.com/read/2016/07/06/151555/3248942/1034/setelah-lebaran-pertamina-teken-kerja-sama-minyak-dengan-iran?mpfinance (queue crawl delay=5000ms) fetching http://blog.detik.com/foto/38/mengoptimalkan-wisata-surabaya-melalui-sunday-sharing-surabaya-14 (queue crawl delay=5000ms) ... ... ... Parsing http://wolipop.detik.com/thespotlight/busanalebaran Parsing http://detik.com/dapur/beriklan ParserJob: success ParserJob: finished at 2016-07-07 21:10:02, time elapsed: 00:03:13 CrawlDB update for webpage7 /Users/hennywijaya/nutch/apache-nutch-2.3.1/runtime/local/bin/nutch updatedb -D mapred.reduce.tasks=2 -D mapred.child.java.opts=-Xmx1000m -D mapred.reduce.tasks.speculative.execution=false -D mapred.map.tasks.speculative.execution=false -D mapred.compress.map.output=true 1467882379-31716 -crawlId webpage7 DbUpdaterJob: starting at 2016-07-07 21:10:16 DbUpdaterJob: batchId: 1467882379-31716 DbUpdaterJob: finished at 2016-07-07 21:12:22, time elapsed: 00:02:06 Indexing webpage7 on SOLR index -> http://localhost:9300/nutch/ /Users/hennywijaya/nutch/apache-nutch-2.3.1/runtime/local/bin/nutch index -D mapred.reduce.tasks=2 -D mapred.child.java.opts=-Xmx1000m -D mapred.reduce.tasks.speculative.execution=false -D mapred.map.tasks.speculative.execution=false -D mapred.compress.map.output=true -D solr.server.url=http://localhost:9300/nutch/ -all -crawlId webpage7 IndexingJob: starting Active IndexWriters : ElasticIndexWriter elastic.cluster : elastic prefix cluster elastic.host : hostname elastic.port : port (default 9300) elastic.index : elastic index command elastic.max.bulk.docs : elastic bulk index doc counts. (default 250) elastic.max.bulk.size : elastic bulk index length. (default 2500500 ~2.5MB) IndexingJob: done.
Demikian, proses crawling yang sejatinya terdiri atas 6 langkah, harus mengeksekusi 6 perintah secara berurutan ( inject, generate, fetch, parse, updatedb, index ), kini dapat dilakukan hanya dengan mengeksekusi satu perintah dengan menggunakan crawl script bawaan Apache Nutch.
Setelah proses crawling selesai, yakni data hasil crawling telah disimpan dan di-index, selanjutnya data tersebut dapat divisualisasikan menggunakan Kibana. Langkah-langkahnya sama dengan yang telah dijelaskan pada artikel (Crawling dan Indexing Berbasis Apache Nutch, Elasticsearch, dan MongoDB).
Ingat: apache-nutch-2.3.1 TIDAK kompatibel dengan elasticsearch-2.3.3 Kompatibilitas yang telah dikonfirmasi adalah apache-nutch-2.3.1 + elasticsearch-1.4.4 + kibana-4.1.8 + mongodb-3.2.1
Pada pengaturan default, links yang mengandung parameter query akan tidak dihiraukan atau disaring dan dibuang. Untuk dapat melakukan crawling terhadap urls yang mengandung parameter query, silakan lakukan pengaturan pada file conf/regex-urlfilter.txt dan tambahkan # pada permulaan setiap garis untuk menyatakan isi baris tersebut sebagai comment.
# skip URLs containing certain characters as probable queries, etc. #-[?*!@=]
Selamat Mencoba!
Comments
Jika berkenan, ditunggu kunjungan baliknya ke : HDD dan SSD dan Toko Komputer Online