Wczytanie danych ze źródła strony HTML i przypisanie je jako zmiennej

0

Witam

Tworzę prosty kalkulator spalania oparty na formularzu HTML. Jest napisany w JavaScript i liczy poprawnie. Chciałbym zaimplementować automatyczne pobieranie cen paliw z zewnętrznej strony, by potem przypisać je jako zmienne w moim kalkulatorze i operować nimi podczas obliczeń. Mam skrypt do wyświetlania cen paliw danych metodą post:

<form method="POST" action="http://www.autocentrum.pl/widget/paliwa.php" name="paliwo">
    <input type="text" name="regionid">
     <formularz.submit(1);>

Kod ten działa i wyświetla wyłącznie ceny paliw, które są mi potrzebne. Kod źródłowy tej strony wygląda tak:

        <div class="petrol">4,54 <img src="/gfx/up_icon.gif" alt="wzrost" /></div>
        <div class="petrol">4,16 <img src="/gfx/down_icon.gif" alt="spadek" /></div>
        <div class="petrol">1,57 <img src="/gfx/down_icon.gif" alt="spadek" /></div>

Czy jest jakiś sposób na pobranie zawartości z div, przypisanie ich jako zmiennych i użycie w moim kalkulatorze? I czy jest to możliwe w technologii Java Script? Proszę o pomoc

0

Ściąganie zawartości innych stron w js to trochę overkill. Lepiej sobie zrobić plik php który to robi, i ściągać z tego pliku ajaxem.

0

Lepiej zrobić REST API w Springu MVC
PHP to dzieło szatana

0

Czyli w takim razie zastosować php, mowa tutaj o curl? Czytałem o tej metodzie, ale nie jestem zbyt biegły w php. Jak mogłaby wyglądać implementacja takiego kodu?

1

@skrash93 Skorzystaj z wyszukiwarki, ten link znalazłem w 2 sekundy:
http://stackoverflow.com/questions/2259892/how-to-read-a-web-page-in-php

Dopiero jak utkniesz to na forum.

PS: Tylko upewnij się że nie ma lepszego sposobu na znalezienie tych danych, bo parsowanie innej strony to jakaś choroba. Nie dość że jest skomplikowane to jeszcze może się zmienić, a Twój skrypt nie będzie tego umiał rozparsować.

1

Jak wygląda implementacja takiego kodu :

  1. Pobierasz curl albo file_get_content() gdzie w parametrze podajesz url strony
  2. Pobierasz jakiś html dom żeby móc jakoś odczytać te dane z htmla albo preg_matchem
  3. zapisujesz do siebie, ajaxem odczytujesz

Albo najlepiej poszukaj jakiegoś web service który udostępnia ceny paliw. Po teraz ktoś zmieni widok strony, to bedziesz musiał skrypt od nowa pisać :)

PS: http://www.fueleconomy.gov/feg/ws/index.shtml

Nie jest to json, ale i tak 100 razy lepsze niż parsowanie htmla

0

Na wstępnie bardzo dziękuję użytkownikowi Heheczek za link, jest teraz o wiele prościej.

Pomyślałem teraz, by po prostu pobrać dane do php używając funkcji simplexml_load_file, a później przekazać do Java Script jako zmienną i tam dokonywać obliczeń. Niestety napotkałem następny problem. Zawartość pliku xml z którego chcę pobrać dane jest następująca:

<fuelPrices>
<cng>2.09</cng>
<diesel>2.27</diesel>
<e85>1.86</e85>
<electric>0.13</electric>
<lpg>2.85</lpg>
<midgrade>2.47</midgrade>
<premium>2.68</premium>
<regular>2.22</regular>
</fuelPrices>

Napisałem w php następujący kod:

<?php
$fuelPrices = simplexml_load_file("http://www.fueleconomy.gov/ws/rest/fuelprices");
foreach($fuelPrices->fuelPrices as $fuelPrices) 
{
echo '<b>'.$fuelPrices->diesel.'</b>';
	
}

?>

Niestety nie wyświetla on nic. Co robię źle?

0

Funkcja simlexml_load_file zwraca ci to :

object(SimpleXMLElement)#65 (8) {
  ["cng"]=>
  string(4) "2.09"
  ["diesel"]=>
  string(4) "2.27"
  ["e85"]=>
  string(4) "1.86"
  ["electric"]=>
  string(4) "0.13"
  ["lpg"]=>
  string(4) "2.85"
  ["midgrade"]=>
  string(4) "2.47"
  ["premium"]=>
  string(4) "2.68"
  ["regular"]=>
  string(4) "2.22"
}

Czyli wystarczy jak zrobisz $fuelPrices->diesel, bez foreach. Na przyszłość jeśli nie wiesz co zwraca dana funkcja polecam polecenie var_dump().

<?php
	$fuelPrices = simplexml_load_file("http://www.fueleconomy.gov/ws/rest/fuelprices");
	echo "<pre>";
	var_dump($fuelPrices) ; 
	echo "</pre>";	
?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1