Hocalar daha nce hiç bot yazmamıştım, lakin bir sebepten dolayı yazmam gerekti. Şimdi programın iskeleti tamam. HTTP requestler, dom parsing ıvır zıvır hazır. Ancak veriyi çekme stratejisi konusunda kararsız kaldım. Veri kategoriler altında pagination ile listeleniyor. Veri de atıyorum /veri. php?id=x URI'sinde bulunuyor. nce tek tek kategori altındaki sayfaları gezip ürün idlerini çektikten sonra, veri sayfasından ürünleri mi çekmek mantıklı. Yoksa, /veri. php?id=x'te x'i sıfırdan başlatıp muhtemel her id değeri için bir request gnderip veri var mı yok mu diye kontrol etmek mi mantıklı. Şimdi veri id'leri baya karışık 3000-4000 arası grünüyor ama istisna var mı bilemiyorum. Tek tek her id için request yollamak daha yavaş olur ve ban yeme riskini arttırır gibi geliyor. Diğer türlü crawling de meşakkatli olacak. Normalde botlarda hangi teknik kullanılıyor? while (1<2)

scrapy kullanacaksan sunucuyu iyi gzlemlemek ve scripti iyi ayarlamak gerekir twisted kullandığından ve default ayarlarla (16 connection pool) hayvan gibi smürür siteyi illa scrapy kullanacaksan dikkat çekmeden, sunucunun anasını ağlatmadan çekmek için nereceklerim http://doc.scrapy. org/en/latest/topics/settings.html - CONCURRENT_REQUESTS = 1 veya 3 - ram'i smürmesine engel olmak ve kaldığın yerden devam edebilmek için JOBDIR klasrü belirlenmeli - verileri daha sonra kolay işleyebilmek adına çıktı formatı olarak ONELINE JSON

Eyv hocam sağolasın. Libcurl kullanıyorum php. Bildiğim kadarıyla cURL aynı servera yapılan requestlerde aynı connectionu kullanıyor zaten, yle değil mi? Acaba python-scrapy ikilisine mi donsem diye de dusunmuyor değilim. Scrapy candir. vatandaşa kafam girsin!..

hangisi kolayına gidiyorsa, iki türlü de yapabilirsin en azından max id'yi biliyorsan ve site HEAD destekliyorsa hız kazandırır nce HEAD çekersin, yle bir sayfa yoksa zaten 404 dner, var ise GET ile çekersin hangi dili kullandığını bilmediğimizden anca bu kadar tavsiye verebiliyorum streaming request destekleyen bir fonksiyon var ise elinde nce get çekersin 20x dnerse veri vardır body'yi çekip işlersin büyük lçekli bi site değilse nasıl yaptığın pek bir şeyi değiştirmeyecek bunlara ek olarak kullandığın dilde reusing same connection diye aratırsan, ilk isteği yaptığı socket'i kapatmadan diğer urlleri de aynı socketten istersin, bu sana tek thread'de bile baya hız kazandırır

Bu konuyu da hallettim. Scrapy işine girmedim hiç. requests ve lxml ile hallettim. Concurrent request işine giremedim. Multithreading de denedim, gevent de denedim, grequests de denedim hiç birisi single process'ten daha iyi performans vermedi. Sanırım hedef site ile ilgili bir durum. Nitekim site Apache Benchmark'ta berbat sonuç veriyor. krypt tarafından 11/Tem/16 10:55 tarihinde düzenlenmiştir while (1<2)

benzer bi botta nce kategorilerin bulunduğu sayfadan kategorileri çekip sonra o sayfalardan ürünleri çekmiştim. idler her zaman düzenli gitmiyor, yayından kaldırılmış bir ürünse mesela bazı sayfaları boşuna ziyaret edersin. İnsan; insan olsaydı, insan olmazdı..

Eyv hocam sağolasın. Libcurl kullanıyorum php. Bildiğim kadarıyla cURL aynı servera yapılan requestlerde aynı connectionu kullanıyor zaten, yle değil mi? Acaba python-scrapy ikilisine mi donsem diye de dusunmuyor değilim. krypt tarafından 09/Haz/16 09:30 tarihinde düzenlenmiştir while (1<2)