Bu test ile ilgili sıkıntılar var, açıklayayım. Denek güvenilir değil, yani tahribat. İlla dinamik bir yanıt işlenecekse veya bu aralar pek de güvenilir olmayan tahribat gibi bir site test edilecekse 10 yeterli bir istek sayısı değil. Birkaç yüzden aşağı olmamalı. Ben hatrı sayılır bir DOM ağacına sahip olan statik ama uzak bir dosya ile yapmayı yeğlerim. Scrapy diğer kodlara denk değil. Arada çok fazla middleware var. Buradan kendisine saygılarımızı iletelim. DOM ağacı oluşturup sunan kod ile Regex'i eşleşmesi yapan kodlar da "Scrapy ve diğerleri" gibi denk değil. PHP ve C# kodlarında sıkıştırılmış yanıt kabul edileceği belirtilmemiş. Haliyle sıkıştırılmamış, daha büyük bir yanıtı beklemek zorundalar. 110 KB civarı trafik oluşturuyorlar. Python'un requests'inde sıkıştırma varsayılan olarak açık, 14 KB civarı trafik oluşturuyor. buzukatak tarafından 17/Eyl/16 22:30 tarihinde düzenlenmiştir anlıyorum.

wasd bunu yazdı coder2 bunu yazdı Php de curl ile kod çekmek pekte mantıklı gelmiyor bana, bununla beraber 19. satırda tekrar str_get_html e atanması na da gerek yok ; aşağıdaki kodları da bi teste tabi tut istersen benim pc de daha verimli çıktı function UrlSay file_get_html ile çekersen sıkıntı yok, ama str_get_html string ile çalışıyor url ile değil. Php gurusu değilim zaten, kimse php ile yazmak istemedi ben yazayım dedim :D curl ile data çekmek neden mantıklı değil? Hocam zaten str_Get_html ile neden çektin demedim, curl ile çektiğin kodu tekrar atadın dedim. curl ile data çekmeyi tercih etmiyorum çünkü çok fazla kod kalabalığı oluyor ve kendi gzlemlerime gre performans açısından da simplehtmldom a gre daha zayıf kalıyor. rneğin kodlara bakarsan curl ile 7 satırda kodları çekmişsin ve sonrasında tekrar str atamışsın vs vs.. benim yazdığım kodda 3 satırda kodları almış oluyorum ve 4. satırda sonucu dndürüyorum. Tabi bende php konusunda guru değilim kendi gzlem ve tercihlerimden bahsediyorum.. Hocam curl ile simplehtmldom'u nasıl karşılaştırıyorsun? Curl http ve bazı diğer protokoller için kutuphane, simplehtmldom ise html parser. Aynı işi yapmıyorlar. Bunlara ek olarak asenkron requestler, multithreading ve multiprocessing yetrneklerini de gz nünde bulundurmak gerek. krypt tarafından 18/Eyl/16 14:00 tarihinde düzenlenmiştir while (1<2)

Süper bir çalışma.

test yanlış scrapy'nin load süresini gzardı edersen "çok geç indirip parse ediyor yhaa" dersin byle ayrıca 2 defa find çektirerek süreci yavaşlatmışsın, '//a/@href' xpath'i dururken maksat requests + linkleri buldurma süresi ise, doğru kod: https://gist.github.com/anonymous/b41b2b4407b53185e9694882d538b49d scrapy'yi düzgün kullandığında diğerlerinin sunmadığı avantajları ve performansı elde edersin hadi kolay gele tişikkirlir sipirmin İnsan; insan olsaydı, insan olmazdı..

Niye herkes bana 0x bilmem ne diyor küfür ederim bak :/İşin içinde çok fazla değişken var internet bağlantısı vs vs BS4 de aslında css selector olarak kullansaydın daha iyi değil miydi? find_all ile zaten bi nevi xpath yani Not :Bu arada aktif olarak grev alamamın sebebi tatilde olmam ve telefonla ne yazayım? :D 0x656e tarafından 17/Eyl/16 21:22 tarihinde düzenlenmiştir

PHP sürümü kaç? PHP sürüm 7 süre için nemli bir etkendir. Birde curl biraz saçma kalmış link saymak için. Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

Herkese selam, Geçenlerde botlar hakkında dnen bir muhabbet üstüne bir test yapalım dedik, @FCN @wasd ve ben çeşitli dillerde farklı araçlarla ufak botlar yazdık. Testini yaptık, konuyu açmak farz oldu tabi. - Botlar C#, Python ve PHP ile yazıldı. @FCN C# ile bir tane HtmlAgilityPack kullanan, bir tane de düz regex kullanan bot yazdı. Ben Pythonda Scrapy, lxml ve beautifulsoup modüllerini kullanarak 3 ayrı bot yazdım. (@0xüçbeşbişey de bir şeyler yapacaktı güya, neyse ) @wasd ise PHP'de curl ve SimpleHtmlDom kütüphanesini kullanarak yazdı. - Botlara verilen grev http://www.tahribat.com/Forum/ sayfasındaki link sayısını bulmaktı. - C# ile yazılan botlar Windows 10'da, PHP ve Python ile yazılan botlar yine aynı bilgisayarda Ubuntu 14.04'de tarafımca test edildi. İnternet bağlantısının stabilliği tartışmaya açık olmakla beraber sonuca daha gerçekçi yaklaşabilmek için her bir bot 10 kere test edildi ve ortalamaları alındı. - Python ile yazılan botlar Linux'teki time komutuyla test edilip, çıkan sonuçtaki real time değeri alındı. C# ve PHP ile yazılan botlarda hesaplama programın kendi içinde yapıldı. PYTHON Lxml: import requests from lxml import html url = 'http://www.tahribat.com/Forum/' xpath = '//a/@href' page = requests. get tree = html. fromstring print(len(tree. xpath Beautifulsoup: import requests from bs4 import BeautifulSoup def get_links : response = requests. get soup = BeautifulSoup c = len(soup. find_all print get_links Scrapy: import scrapy, os class TBTCrawler : name = 'tbt' start_urls = def parse : c = len(response. css . xpath print if name " main ": com = 'scrapy runspider "%s"' % file os. system C#: HtmlAgilityPack ve Regexle yapılan botlar tek program içinde, kodlar yaklaşık 80 satır o yüzden pastebin linki veriyorum: http://pastebin.com/u7L7RRUH PHP: Bot. php: <?php header("Content-Type: text/html; charset=utf-8"); require_once 'shd. php'; function getSite $baslama = microtime ; $data = getSite ; $sayfa = str_get_html ; echo "URL sayısı: ". count($sayfa->find ."<br>"; $toplamSure = microtime - $baslama; echo "Çalışma süresi: ".$toplamSure; ?> Çalıştırmak için gereken SimpleHtmlDom kütüphanesi: http://pastebin.com/GqFCXqjJ SONUÇLAR: (12. satırda 10 sonucun ortalamaları, 13. satırda değerlerin standart sapması belirtilmiştir.) 10 testin ortalamasına baktığımızda, - Pythonda Lxml ile yazılan botun ortalama 0.4868 saniyede verilen linkleri sayması ve yaklaşık 0.04lük standart sapmasıyla en başarılı bot olduğunu, - Yine Pythonda Scrapy ile yazılan botun ortalama 1.512 saniyede verilen linkleri saymasıyla en başarısız bot olduğunu grebiliyoruz. Sıralama şu şekilde olmaktadır: 1- Lxml 2- PHP 3- BeautifulSoup 4- Düz Regex 5-HtmlAgilityPack 6-Scrapy NOTLAR VE YORUMLAR - Sonuçlarda Python ile yazılanların time komutu ile diğerlerinin de program içinden süre tutmasının etkisinin olabileceği ihtimalini es geçmemek gerekir.- Scrapy gerçekten crawling işlemleri için yapılmış bir modüldür ve yüzlerce hatta daha fazla sayıda sayfaları çok hızlı taradığı bilinmektedir. Bu testte sonuncu olmasının sebebi ise diğerlerine gre başlangıçta daha fazla process ynetmesiyle ve/veya bu test için yapılan rnekte gereksiz kodlar bulunabilmesiyle alakalı olabileceğini de es geçmemek gerekir.- Sonuçlarda, testlerin bir kısmının farklı zamanlarda ve farklı işletim sistemlerinde yapılmış olmasının ve yeterince stabil olmayan kablosuz internet bağlantısının etkisinin olabileceğini es geçmemek gerekir. İsteyenlerin farklı dillerle, farklı araçlarla veya farklı yntemlerle rnekler hazırlayıp katkıda bulunmasını memnuniyetle karşılarız. İnsan; insan olsaydı, insan olmazdı..

haydii bakalımm HtmlAgilityPack : 0.12500715 Regex : 0.139467972 Efsaneler efsanesi bot lavaşı :D :D iyibu! yeniden..

haydii bakalımm HtmlAgilityPack : 0.12500715 Regex : 0.139467972 http://www.leyladansonra.com/

haydii bakalımm HtmlAgilityPack : 0.12500715 Regex : 0.139467972 diğer kodlamalarıda senin çalıştıman lazım. veya bunu konu sahibi çalıştırması lazım. farklı pclerde işin rengi değişir :) Bazıları zgürlüğü sadece kendileri gibi düşünenlere reva grüyor...

coder2 bunu yazdı Php de curl ile kod çekmek pekte mantıklı gelmiyor bana, bununla beraber 19. satırda tekrar str_get_html e atanması na da gerek yok ; aşağıdaki kodları da bi teste tabi tut istersen benim pc de daha verimli çıktı function UrlSay file_get_html ile çekersen sıkıntı yok, ama str_get_html string ile çalışıyor url ile değil. Php gurusu değilim zaten, kimse php ile yazmak istemedi ben yazayım dedim :D curl ile data çekmek neden mantıklı değil? Hocam zaten str_Get_html ile neden çektin demedim, curl ile çektiğin kodu tekrar atadın dedim. curl ile data çekmeyi tercih etmiyorum çünkü çok fazla kod kalabalığı oluyor ve kendi gzlemlerime gre performans açısından da simplehtmldom a gre daha zayıf kalıyor. rneğin kodlara bakarsan curl ile 7 satırda kodları çekmişsin ve sonrasında tekrar str atamışsın vs vs.. benim yazdığım kodda 3 satırda kodları almış oluyorum ve 4. satırda sonucu dndürüyorum. Tabi bende php konusunda guru değilim kendi gzlem ve tercihlerimden bahsediyorum.. nceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..

test yanlış scrapy'nin load süresini gzardı edersen "çok geç indirip parse ediyor yhaa" dersin byle ayrıca 2 defa find çektirerek süreci yavaşlatmışsın, '//a/@href' xpath'i dururken maksat requests + linkleri buldurma süresi ise, doğru kod: https://gist.github.com/anonymous/b41b2b4407b53185e9694882d538b49d scrapy'yi düzgün kullandığında diğerlerinin sunmadığı avantajları ve performansı elde edersin hadi kolay gele

Güzel konu olmuş, varmı farklı bir yntemle daha hızlı çektiririm diyen

Ne güzel iş yapmışsınız bir bilim adamı edası ile. Gzlemler falan:)

Php de curl ile kod çekmek pekte mantıklı gelmiyor bana, bununla beraber 19. satırda tekrar str_get_html e atanması na da gerek yok ; aşağıdaki kodları da bi teste tabi tut istersen benim pc de daha verimli çıktı function UrlSay file_get_html ile çekersen sıkıntı yok, ama str_get_html string ile çalışıyor url ile değil. Php gurusu değilim zaten, kimse php ile yazmak istemedi ben yazayım dedim :D curl ile data çekmek neden mantıklı değil? :)

haydii bakalımm HtmlAgilityPack : 0.12500715 Regex : 0.139467972 olum cok agir issizsin lan :D az insan çok huzur.

Niye herkes bana 0x bilmem ne diyor küfür ederim bak :/İşin içinde çok fazla değişken var internet bağlantısı vs vs BS4 de aslında css selector olarak kullansaydın daha iyi değil miydi? find_all ile zaten bi nevi xpath yani Not :Bu arada aktif olarak grev alamamın sebebi tatilde olmam ve telefonla ne yazayım? :D Bs4 te default olarak lxml kullanılıyor aslında, test yaparken konsolda uyarı veriyordu "Bak default olarak lxml kullanıyorum şu an, eğer bu uyarıyı grmek istemiyorsan kodda da belirt." diye. O nedenle lxml olarak belirttim. Scrapy de parse işlemleri için lxml kullanıyor olabilir emin değilim ama. Farklı varyasyondaki botları da sizden bekleriz efendim :D İnsan; insan olsaydı, insan olmazdı..

baristbt bunu yazdı bot lavaşı :D :D Canım çiğkfte çekti :D:D:D Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Php de curl ile kod çekmek pekte mantıklı gelmiyor bana, bununla beraber 19. satırda tekrar str_get_html e atanması na da gerek yok ; aşağıdaki kodları da bi teste tabi tut istersen benim pc de daha verimli çıktı function UrlSay nceleri Kızlar Utanınca Kızarırdı Şimdilerde Kızarınca Utanıyorlar..