PHP curl birçok sayfayı yazdırma işlemi

nolonger

Hectopat
Katılım
27 Şubat 2021
Mesajlar
153
Merhabalar, bir sorum vardı curl ile birçok sayfadan veri çekip yazdırabilir miyiz? Yapabilirsek nasıl yapabiliriz?
 
Tabiki yapabilirsiniz. Asagidaki yazdigim kod ornegini inceleyebilirsiniz. Asagida yazdigim kod, technopat.net anasayfasinda one cikan haberlerin basliklarini cekip ekrana yazdiran bir kod ornegi. Bundan esinlenerek kendi amaclariniz icin kodu degistirebilirsiniz.

[CODE lang="php" title="php curl ile web sayfalarindan belirli verileri cekme"]<?php

// gonderilen url yi curl ile cekip, sonuclari donen bir fonksiyon tanimliyorum.
function sayfayiCek($url)
{
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

$secenekler = [
CURLOPT_USERAGENT => $user_agent,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 30,
CURLOPT_TIMEOUT => 30,
CURLOPT_MAXREDIRS => 20
];

$ch = curl_init($url);
curl_setopt_array($ch, $secenekler);
if (preg_match("/^https/", $url)) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
$icerik = curl_exec($ch);
$hata_kodu = curl_errno($ch);
$hata_mesaji = curl_error($ch);
$sonuc = curl_getinfo($ch);
curl_close($ch);
$sonuc['hata_kodu'] = $hata_kodu;
$sonuc['hata_mesaji'] = $hata_mesaji;
$sonuc['icerik'] = $icerik;
return $sonuc;
}

// yukarida tanimladigim fonksiyon ile technopat.net anasayfasini $sayfa degiskenine cekiyorum.
$sayfa = sayfayiCek('https://www.technopat.net/');


// bu sirada bir hata olustuysa ekrana hata mesaji bastiriyorum
if ($sayfa['hata_kodu'] != 0 || $sayfa['http_code'] >= 300 || $sayfa['http_code'] < 200) {
echo "<h1>Bir hata olustu!</h1>";
exit;
}

// ufak bir regexp ile anasayfadaki one cikan haber basliklarini ayiklayip, bir diziye atiyorum.
preg_match_all("/rel=\"bookmark\"[^>]+>(?P<son_haberler>[^<]+)</", $sayfa['icerik'], $eslesmeler);

// bulunan tum eslesmeleri ekrana bastiriyorum.
echo '<pre>';
print_r($eslesmeler['son_haberler']);
echo '</pre>';[/CODE]
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…