• 15-01-2014, 22:36:28
    #1
    Merhabalar,

    Post ile dataların çekildiği bir siteden nasıl değer çekebiliriz, yani nasıl dışarıdan istediğimiz değişikenlerle post yaptırıp data çekeriz.

    Örnek olarak şu sayfadan:

    http://isyatirim.com.tr/C_LT_financial.aspx

    Önce GARANTİ hisse senedini seçtiğimizde sayfanın refresh olmasını daha sonra 2011/12 değerini seçip gönderip ilgili dataların çekimini yapmam gerekiyor.

    Ufacık bir örnek saatlerimi kurtarabilir, desteğinizi bekliyorum.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:36:28 -->-> Daha önceki mesaj 22:22:15 --

    Ya da şuradan:
    http://www.bigpara.com/analiz/mali-tablolar/

    GARANTİ - 2010 - 12 aylık seçenekleri ile POST edip gelen sayfanın datalarını ayıklamak. Yani bana post etsem ve cevap alsam yeter, diğer verileri alırım, buraya kadar yardımcı olabilecek var mıdır?
  • 16-01-2014, 09:48:25
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    php CURL ile belirtmis oldugun linke POST data gönderip sonucu alabilmen mumkun..
  • 16-01-2014, 11:31:01
    #3
    @ekartal hocamında söylediği gibi curl kullanman lazım bir örnek hazırladım;

    header("content-type:text/html;charset=utf-8");
    
    function oku($url, $post = false){
    	
    	$ch = curl_init(); 
    
    	curl_setopt($ch, CURLOPT_URL, $url);  
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:23.0) Gecko/20100101 Firefox/23.0');
    	curl_setopt($ch, CURLOPT_HEADER, 0);  	
    
    		if($post):
    	curl_setopt($ch, CURLOPT_POST, true);   	
    	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);   	
    		endif;
    
    	$sonuc = curl_exec($ch);  
    	curl_close($ch);  
    
    	return trim(preg_replace('/\s+/', ' ', $sonuc));
    }
    
    $post = "HisseKod=GARAN&Yil=2010&Donem=4&Kur=TL&Cins=1&Submit=Getir";
    
    $oku = oku('http://www.bigpara.com/analiz/mali-tablolar/', $post);
    
    preg_match('#<div class="maliTable">(.*?)</div>#', $oku, $tablo);
    preg_match_all('#<span class="(i|)">(.*?)</span> <small class="up">(.*?)</small>#', $tablo[0], $sonuc);
    
    echo "<pre>";
    print_r($sonuc);
    burdaki bazı değerler şurdan geliyor;
    ilk olarak hedef sitede biz seçimlerimizi yaptımızda site onu nasıl işliyor bunu öğrenmemiz lazım mesela bu site o verileri post ediyor get metoduylada site.com/islem.php?deger=true&deger2=734 bu şekilde bir sayfayda yönlendire bilirdi bunu yakalamak için firefox'un tramper data isimli bir eklentisi var onu kullanıyorum ben

    web sitesine girin seçimlerinizi yapın daha sonra getir butonuna bastığınızda tramper data bunu yakalıyor bize post değerlerini gösteriyor bakın şöyle;
    http://i.imgur.com/gXdonjB.png

    daha sonra sitenin nasıl işlediğini anlamış oluyoruz bizim dolduğumuz form'dan verileri alıp sessiona atıyor ve onları gösteriyor bunuda curl ile taklit etmek için koddaki verdiğim fonksiyonu kullanıyoruz fonksiyon 2 parametre alıyor 1.si girilecek site adresi 2.si opsiyonel post data varsa onu yazıyorsunuz post ediyor hedef siteye o verileri geriyede sitenin verdiği çıktıyı döndürüyor mesala echo $oku yaparsanız kodda geriye sitenin normal çıktısını döndürdüğünü göreceksiniz.

    bu çıktıyı aldıktan sonrada regex ile size lazım olan kısımları ayıklıyorsunuz
  • 16-01-2014, 14:12:46
    #4
    Üyeliği durduruldu
    Arkadaşlarında söylediği gibi mesela bir hava durumu botu gibi düşün karşı sitedi veri güncellediği anda sendede oluyor eğer örnek istersen hava durumu botu yapımı diye araştırabilirsin.
  • 16-01-2014, 14:21:51
    #5
    Teşekkürler arkadaşlar, .NET ile yazdım ben de kılavuz olacaktır bu konu ihtiyaç duyanlara.