wmaraci reklam
lidertakipci

Php Curl İle Veri Çekme Sorunu?

5 Mesajlar 4.986 Okunma
advertseo
wmaraci reklam

moris moris ◡̈ Kullanıcı
  • Üyelik 11.12.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılım Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad M** B**
  • Mesajlar 831
  • Beğeniler 266 / 265
  • Ticaret 26, (%100)
Merhaba, curl ile https://www.elazigeczaciodasi.org.tr/nobetcieczane/ sitesinden nöbetçi eczaneleri çekmeye çalışıyorum fakat

etiketleri arasındaki Eczane adı, Eczane adresi ve Eczane telefonu kısımlarını ayrı ayrı çekmek istiyorum.


Sitedeki html kodu bu şekilde:

GÜL ECZANESİ

Sarayatik Mh.Öğretmen Cemil Meriç Sk.

Elazığ Lisesi Sanat Okulu Karşısı

Telefon: 0424 236 52 18






Benim PHP kodum bu şekilde:

function siteConnect($site)
{

$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, "$site");
curl_setopt($ch, CURLOPT_URL, $site);
curl_setopt($ch, CURLOPT_USERAGENT, $hc);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOP_TIMEOUT,50);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
$site = curl_exec($ch);
curl_close($ch);



// Veriyi parçalama işlemi
preg_match_all('@(.*?)@si',$site,$eczane_bir); //Sadece eczane adını bu şekilde alabiliyorum.
preg_match_all('@

(.*?)

@si',$site,$eczane_iki);
preg_match_all('@

(.*?)

@si',$site,$eczane_uc);
preg_match_all('@

(.*?)

@si',$site,$eczane_dort);

// HTML etiketleri kaldırma
$eczane_bir = strip_tags($eczane_bir[0][0], "");
$eczane_iki = strip_tags($eczane_iki[0][1], "");
$eczane_uc = strip_tags($eczane_uc[0][2], "");
$eczane_dort = strip_tags($eczane_dort[0][3], "");

echo strip_tags($eczane_bir);
echo strip_tags($eczane_iki);
echo strip_tags($eczane_uc);
echo strip_tags($eczane_dort);



}

$giris = siteConnect('http://www.elazigeczaciodasi.org.tr/nobetcieczane');
echo $giris;

?>



Yapmak istediğim eczane_bir_isim , eczane_bir_adres ve eczane_bir_telefon olarak her eczanenin bilgilerini parçalamak. Yardımcı olabilecek var mı?
 

 

wmaraci
reklam

moris moris ◡̈ Kullanıcı
  • Üyelik 11.12.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılım Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad M** B**
  • Mesajlar 831
  • Beğeniler 266 / 265
  • Ticaret 26, (%100)
Güncel.
 

 

yilmaz68 yilmaz68 WM Aracı Kullanıcı
  • Üyelik 17.01.2017
  • Yaş/Cinsiyet 58 / E
  • Meslek Emekli
  • Konum Almanya
  • Ad Soyad Y** Ç**
  • Mesajlar 44
  • Beğeniler 18 / 17
  • Ticaret 0, (%0)
Birde böyle deneyiniz

$site = file_get_contents("http://www.elazigeczaciodasi.org.tr/nobetcieczane");
$site = str_replace(array("\n","\t","\r"),null,$site);

//echo $site;

preg_match_all('@

(.+?)
(.+?)
(.+?)
(.+?)(.+?)
(.+?)@si',$site,$al);

$eczane1 = $al[1];
$eczane2 = $al[2];
$eczane3 = $al[3];
$eczane4 = $al[4];
$eczane5 = $al[5];
$eczane6 = $al[6];
$eczane7 = $al[7];

for($i=0; $i echo $eczane1[$i]."
";
echo $eczane2[$i]."
";
echo $eczane3[$i]."
";
echo $eczane4[$i]."
";
echo $eczane5[$i]."
";
echo $eczane6[$i]."
";
echo $eczane7[$i]."


";
}
?>


Demo : http://main.xfiddle.com/code_31677531.php
moris

kişi bu mesajı beğendi.

moris moris ◡̈ Kullanıcı
  • Üyelik 11.12.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Yazılım Mühendisi
  • Konum İstanbul Anadolu
  • Ad Soyad M** B**
  • Mesajlar 831
  • Beğeniler 266 / 265
  • Ticaret 26, (%100)

function siteConnect($site)
{

$ch = curl_init();
curl_setopt($ch, CURLOPT_REFERER, "$site");
curl_setopt($ch, CURLOPT_URL, $site);
curl_setopt($ch, CURLOPT_USERAGENT, $ch);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT,50);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
$site = curl_exec($ch);
curl_close($ch);

// Veriyi parçalama işlemi
preg_match_all('@

(.*?)

@si',$site,$eczane_bir); //Sadece eczane adını bu şekilde alabiliyorum.
preg_match_all('@

(.*?)

@si',$site,$eczane_iki);
preg_match_all('@

(.*?)

@si',$site,$eczane_uc);
preg_match_all('@

(.*?)

@si',$site,$eczane_dort);

// HTML etiketleri kaldırma
$eczane_bir = strip_tags($eczane_bir[0][0], "");

$veriparcala_bir = explode("\n", $eczane_bir);

echo "Eczane Adı: ".$veriparcala_bir[0]."
"."Eczane Adresi: ".$veriparcala_bir[1]." ".$veriparcala_bir[2]."
".$veriparcala_bir[3];

}

$giris = siteConnect('http://www.elazigeczaciodasi.org.tr/nobetcieczane');
echo $giris;

?>


mustafabosnak sağolsun bu şekilde çözdü.
yilmaz68 mustafabosnak

kişi bu mesajı beğendi.

wmaraci
wmaraci

brown brown WM Aracı Kullanıcı
  • Üyelik 28.10.2013
  • Yaş/Cinsiyet 25 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad H** E**
  • Mesajlar 1748
  • Beğeniler 385 / 385
  • Ticaret 27, (%96)
Regular expression ile uğraşmayın, internetten bir tane düzgün HTML Parser sınıfı bulun ve kullanın.
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)