Merhaba arkadaşlar bugün sizlere PHP'de bir web sitesinden veri çekmeyi göstereceğim.
Aslında mantıksal olarak kolay birşey ancak sizler bu kodu geliştirerek kendi veritabanınıza kayıt ettirebilirsiniz.
Şimdi kodlara başlayalım.
PHP ile Web sitesinden İçerik Çekmek
Bu işi yapmak için en basitinden file_get_contents() fonksiyonuna sahibiz. İçerisine yazazacağımız ilk parametredeki adrese girip kaynağı bir değişkene yüklememizi ya da ekrana yazdırmamızı sağlar.
Örnek bir kod;
$site = "www.visualdersleri.blogspot.com.tr";
$icerik = file_get_contents($site);Örnek bir kod;
$site = "www.visualdersleri.blogspot.com.tr";
echo $icerik;
Bu örneği çalıştırdığımızda file_get_contents() fonksiyonu sayesinde //www.phpr.org adresine girip sitenin kaynağına ulaşıp o kaynağı ekrana yazdırdık.
Sitelere ulaşmanın bir başka yolu yolu ise curl fonksiyonlarıdır. Curl fonksiyonları sayesinde bir adrese girmekle kalmayıp aynı zamanda girilen adrese form verileri gönderebiliriz ve kullanıcı girişi yapabiliriz. Yani PHP’de curl sayesinde sitelere aynı bir gerçek kullanıcıymış gibi, bir browserda gezer gibi girebiliriz.
Örnek ;
function
curl(
$url
,
$post
=false)
{
$user_agent
=
'Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6'
;
$ch
= curl_init();
curl_setopt(
$ch
, CURLOPT_URL,
$url
);
curl_setopt(
$ch
, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(
$ch
, CURLOPT_POST,
$post
? true : false);
curl_setopt(
$ch
, CURLOPT_POSTFIELDS,
$post
?
$post
: false);
curl_setopt(
$ch
, CURLOPT_USERAGENT,
$user_agent
);
$icerik
= curl_exec(
$ch
);
curl_close(
$ch
);
return
$icerik
;
}
Bu fonksiyonu aynı file_get_contents fonksiyonu gibi kullanabilirsiniz. Eğer bir post verisi gönderecekseniz 2. parametreyi “kullanici=musa&sifre=123456” şeklinde kullanmanız gerekecek.
echo
curl(
"//www.wordpress.com/wp-login.php"
,
"user_login=kullanici&user_pass=sifre"
);
Bu örnekde ise wordpress.com/wp-login.php'ye giriş yaptırıyoruz.
Şimdi bir web sitesinden sadece belirli bir kısmını yani sizin istediğiniz içeriği çekmeyi göstereceğim.
Kendinize bir site belirtin ben https://www.mgm.gov.tr/tahmin/il-ve-ilceler.aspx
bu siteyi kullanacağım.
Şimdi siteden ben anlık havadurumunu çekeceğim. Anlık hava durumu İstanbulda 16.6 olarak gösteriyor. Şimdi ben bu 16.6 verisini çekmek istiyorum. İlk olarak 16.6 yazısına sağ tıklayıp kodlarına bakalım. Kodlarını ben buldum kodları bunlar;
<td class="temp ng-binding" ng-bind="sondurum[0].sicaklik | comma">16,6</td>
olarak gösteriyor. Şimdi ise bize bu kodda lazım olan kısım class="temp ng-binding" burası oluyor. Neden diye sorarsanız class anasayfada tek oluyor birden fazla var ise array ile istediğiniz veriyi belirtebilirsiniz.
$icerik
=
file_get_contents
(
$site
);
$sicaklik
= ara(
'class="temp ng-binding">'
,
'</td>'
,
$icerik
);
echo
$
sicaklik[0]
;
Sitede bulunan class="temp ng-binding" adlı class verisinin içinde yazanı bizim ekranımıza yazdır olarak tanımladık.
Hiç yorum yok :
Yorum Gönder