Php Veri Çekme Sorunu - Chatgpt Çözemiyor
-
Çok basit şekilde verileri çekip yazdırması gerekiyor ama çalışmıyor ve chatgpt bir türlü doğru kodu yazamadı :) Bilenler yazarsa sevinirim.
<?php
$url = 'https://kur.doviz.com/kapalicarsi'; // Verileri çekeceğiniz URL
// cURL ile HTTP GET isteği yapın
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// Verileri işlemek için uygun bir şekilde analiz edin
$dom = new DOMDocument();
libxml_use_internal_errors(true); // Hata mesajlarını görmezden gelmek için
$dom->loadHTML($response);
$xpath = new DOMXPath($dom);
// Tablodaki tüm satırları seçin
$rows = $xpath->query('//table[@id="indexes"]/tbody/tr');
// Her satır için değerleri çekin ve yazdırın
foreach ($rows as $row) {
$currency = $xpath->query('.//div[@class="currency-details"]/div[1]', $row)->item(0)->nodeValue;
$buy = $xpath->query('.//td[2]', $row)->item(0)->nodeValue;
$sell = $xpath->query('.//td[3]', $row)->item(0)->nodeValue;
$change = $xpath->query('.//td[4]/div', $row)->item(0)->nodeValue;
$time = $xpath->query('.//td[5]', $row)->item(0)->nodeValue;
echo "Currency: $currency\n";
echo "Buy: $buy\n";
echo "Sell: $sell\n";
echo "Change: $change\n";
echo "Time: $time\n";
echo "\n";
}
?> -
https://symfony.com/doc/current/components/dom_crawler.html#node-filtering
Bununla işini daha kolay halledersin hocam.
-
Sonunda yapabildi:
<?php
$url = "https://kur.doviz.com/kapalicarsi";// Verileri al
$data = file_get_contents($url);// Verileri işle
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($data);
libxml_clear_errors();
$xpath = new DOMXPath($dom);// Tablodaki satırları seç
$rows = $xpath->query('//table[@id="indexes"]/tr[position() > 1]');// Verileri tutacak bir dizi oluştur
$veriler = array();// Her satır için verileri al ve diziye ekle
foreach ($rows as $row) {
$currency = $xpath->query('.//div[@class="currency-details"]/div[1]', $row)->item(0)->nodeValue;
$buy = $xpath->query('.//td[2]', $row)->item(0)->nodeValue;
$sell = $xpath->query('.//td[3]', $row)->item(0)->nodeValue;
$change = $xpath->query('.//td[4]/div', $row)->item(0)->nodeValue;
$time = $xpath->query('.//td[5]', $row)->item(0)->nodeValue;$veriler[] = array(
'currency' => $currency,
'buy' => $buy,
'sell' => $sell,
'change' => $change,
'time' => $time
);
}
?><table class="table">
<thead>
<tr>
<th scope="col">Döviz Cinsi</th>
<th scope="col">Alış Fiyatı</th>
<th scope="col">Satış Fiyatı</th>
<th scope="col">Değişim Oranı</th>
<th scope="col">Son Güncelleme</th>
</tr>
</thead>
<tbody>
<?php foreach ($veriler as $veri) { ?>
<tr>
<th scope="row"><?php echo $veri['currency']; ?></th>
<td><?php echo $veri['buy']; ?></td>
<td><?php echo $veri['sell']; ?></td>
<td><?php echo $veri['change']; ?></td>
<td><?php echo $veri['time']; ?></td>
</tr>
<?php } ?>
</tbody>
</table> -
motka bunu yazdı
https://symfony.com/doc/current/components/dom_crawler.html#node-filtering
Bununla işini daha kolay halledersin hocam.
Teşekkürler hocam buna da bakarım.
-
turkz bunu yazdı
Sonunda yapabildi:
$url = "https://kur.doviz.com/kapalicarsi";
// Verileri al
$data = file_get_contents($url);// Verileri işle
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($data);
libxml_clear_errors();
$xpath = new DOMXPath($dom);// Tablodaki satırları seç
$rows = $xpath->query('//table[@id="indexes"]/tr[position() > 1]');// Verileri tutacak bir dizi oluştur...
buda hatalı galiba hocam index 1 den basladıgı ıcın dolar kurunu almıyor :)
$rows = $xpath->query('//table[@id="indexes"]/tr[position() > 1]'); => $rows = $xpath->query('//table[@id="indexes"]/tr[position() > 0]'); bu sekılde degıstırırsen dolar kurunuda alır
-
Hocam dom olduğunu hiç bilmiyordum kendim string işlemleri ile veri çekiyordum her ne kadar sen yazmamış da olsan bu kodu öğrendiğimiz iyi oldu.sağol.benim kod 30 satırı :)