WM Aracı

WM Aracı (https://wmaraci.com/forum/)
-   PHP (https://wmaraci.com/forum/php.html)
-   -   Curl ile belirli bir alanı çekme (https://wmaraci.com/forum/php/curl-belirli-alani-cekme-562792.html)

mrhydgn 15 Mart 2019 15:59

Curl ile belirli bir alanı çekme
 
Merhabalar. https://www.livebitcoinnews.com/news/bitcoin-news/ linkteki sayfada yer alan haberleri çekmek istiyorum. Fakat her haber için post id farklı olduğundan thumbnail, başlık, açıklama vs. alanlarını parçalayamıyorum. Örnek kod aşağıda yer almaktadır. Bu konuda yardımcı olabilir misiniz ?

PHP- Kodu:

function startBot($site_url $timeout 5)
{

    
$ch curl_init();

    
$tarayici 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0';

    
curl_setopt($chCURLOPT_URL,$site_url);

    
curl_setopt($chCURLOPT_SSL_VERIFYPEER 0);
    
curl_setopt($chCURLOPT_RETURNTRANSFER 1);
    
curl_setopt($chCURLOPT_HEADER         0);
    
curl_setopt($chCURLOPT_TIMEOUT        $timeout);
    
curl_setopt($chCURLOPT_USERAGENT      $tarayici);

    
$result curl_exec($ch);
    
curl_close($ch);

    return 
$result;

}

$kaynak startBot('https://www.livebitcoinnews.com/news/bitcoin-news/');

preg_match_all('@<h3 class="title">(.*?)</h3>@si' $kaynak $cik);
preg_match_all('@<img width="380" height="280" class="attachment-svecc_general_content size-svecc_general_content wp-post-image">(.*?)</img>@si' $kaynak $cikti);

echo 
"<pre>";
//print_r($kaynak);
echo "</pre>";

for(
$sayi 0$sayi 9$sayi++) {
    echo 
'<tr>';
        echo 
$cik[0][$sayi];
    echo 
$cikti[0][$sayi];
    echo 
"</tr>";



Decimas 15 Mart 2019 22:37

Regex bir noktadan sonra zaman kaybı, bunun yerine işin mantığına uygun olarak DOM'da selectors mantığını PHP tarafında uygulamalısın.

mrhydgn 16 Mart 2019 00:33

Decimas Teşekkürler, file_get_html mantığı ile kolay bir şekilde istediğim sonuca ulaştım. Ek olarak belirtmeyi unuttuğum bir nokta var. Çektikten sonra sayfada sürekli olarak bir yenileme oluyor. Bunun önüne geçebilir miyiz ? Ya da alternatif olarak dbye kaydedip öyle mi basmalıyım ?

Decimas 16 Mart 2019 13:37

mrhydgn tüm içeriği doğrudan basıyorsan belki içinde yenileme kodu olduğu için yapabilir.

basich 16 Mart 2019 13:42

str_replace() Fonksiyonlu kullanarak yenileme kodunu kaldırabilirsiniz

mrhydgn 17 Mart 2019 20:20

Teşekkürler, cssleri de ekledim ana siteden. Bahsettiğim yenileme düzeldi.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 03:33.

Powered by vBulletin®
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.