Benzin-Preis-Apps mit Daten der Meldebehörde für Preisvergleich

Also ich nutze das nicht zum Tanken, sondern nur um am Graphen die Unverschämtheit zu sehen, welche der Kartellbehörde nicht aufgefallen ist.

Teste es mal und Du wirst über die absolute Kontinuität in den Aufs und Abs erstaunt sein.

Was? Ein Update … boa ich hink zur Zeit ziemlich hinterher? :slight_smile: Brauch dringend Urlaub!

Zur Frage warum man die Preise ausließt! … Weil wir es können ! :slight_smile:

Hallo zusammen,
Info: Hab die mal angeschrieben wg. der Aktualisierungszeiten. Die waren mir doch suspekt. Ist aber anscheinend doch so dass viele Tanken minütlich aktualisieren.

Hallo,
hat hier schon mal jemand Erfahrungen gemacht?
http://www.tankentanken.de

Es gibt eine API:

Wenn Sie Interesse an der Weiterverbreitung der Benzinpreis-Daten über ihre Verbraucher-Medien haben, schreiben Sie uns einfach eine E-Mail oder rufen Sie uns an. Gerne richten wir Ihnen einen Testzugang ein, über den Sie die aktuellen Adressen, Preise und Öffnungszeiten der Tankstellen abrufen können. Je nach gewünschter Weiterverarbeitung der Informationen, können wir die Daten im XML oder JSON-Format anbieten.

Sie erreichen uns zu diesem Thema unter:
kooperationen@tankentanken.de
0221 / 677 742 862

und ein Hinweis in den Datenschutzbestimmungen:

Urheberrecht

Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet.

Die freie Grosstanke hier bei uns hat letzten Samstag zw. 8 und 12 Uhr mind. 4 mal die Preise geändert, also kurze Intervalle sind schon nicht schlecht.

Gesendet von meinem ASUS Transformer Pad TF700T mit Tapatalk

also kurze Intervalle sind schon nicht schlecht

Mir wärs lieber die aktualisieren nur wenn sich auch was ändert. Hat mich nur geärgert, da ich die Daten in eine MySQL schreibe und hatte das bei jeder Änderung der Meldezeit angestossen. Jetzt schreib ich die Daten halt erst mal in eine Variable und schreibe nur in die MySQL wenn die sich ändert.

Ich hätte auch interesse an dem Auslesen

habe schon ein wenig gebastelt.
wenn man z.B. auf

schaut, ist das ganz praktisch aufgelistet ohne viel unnützes Zeuch. Allerdings ist das etwas aufwendig, wenn man dann noch die Preise für E10 haben will.

Wie hab ihr das gelöst? gerne auch per PN

Vielen Dank

Ich nutze als URL die Standard Seite mit URL Parametern. Die Auswertung mache ich dann über das simpleDOM Framework. Code gerne über E-Mail [Adresse über PN].

Ich baue mir danach eine Tabelle, in der ich einige Tankstellen automatisch Ausblende und die Preise nach Preis sortiert und farbig unterlegt anzeige. Zudem logge ich meine Haupt Tankstelle als IPS Graph bei ÄNDERUNG mit.

Das Script schreibt alle 20 Minuten eine neue HTML Box.

Genau das hört sich super an. Kannst du mir das in PN mal zukommen lassen?

Gesendet von meinem GT-I9100 mit Tapatalk

Die haben am 2.6. was geändert, so dass mein Script die Variablen nicht mehr aktualiesiert hat.
Beim Startpunkt ab wo ausgelesen weden soll muss jetzt (zumindest bei meinem Script) ein ‚(DE)‘ vor den Suffix.

die haben das DE am 1.7. wieder raus genommen.
Mal sehen was nächsten Monat kommt.

Hat evtl schon jemand eine Alternative gefunden?

Dank der Hilfe von Burkhard habe ich jetzt auch immer die Dieselpreise der umliegenden Tankstellen im Blick :slight_smile:

Vielleicht könntest Du die „Hilfe von Burkhard“ näher erläutern :wink:

Gruß
Bruno

Also ich han seit Monaten nix mehr verändert und es läuft problemlos.:smiley:

Dito!

Genau wie Boui… Das Ding ist ein Selbstläufer!

Bin erstaunt, dass das Quick and Dirty – Script so problemlos läuft :smiley:

Sorry, habe deine Frage erst jetzt gesehen.

Burkhard (alias bumaas) hat mir freundlicherweise sein Script zur Verfügung gestellt.
Mit den HighCharts von Raketenschnecke kann ich nun schön die Preispolitik verfolgen.

Hi …

… ich hab das Rad noch mal neu erfunden und mir www.tankentanken.de vorgenommen, da hier keinerlei Verbote von Parsen und Auslesen zu finden sind (ich hab jedenfalls keine gefunden :wink: … bei Bedarf wird auch ausdrücklich eine API angeboten. Somit sollte man bei dieser Quelle relativ sicher sein …

Ich habe hierzu mal eine Funktion gebastelt, die einem bei Übergabe der „Location-Url“ und dem Radius entsprechende Daten in einem Array zurückgibt, welches dann beliebig sortiert, ausgewertet und gespeichert werden kann. Ich triggere das bei mir alle 15 Minuten. Da ich die Seite direkt auslese und nicht die API verwende, ist das ganze natürlich etwas wackelig. Kleinste Änderungen seitens des WebSite-Betreibers würfelt vermutlich alles durcheinander und es bedarf dann entsprechende Anpassungen; gerade im Hinblick, da es sich bei www.tankentanken.de noch um eine Site im Beta-Stadium handelt. Aber für meine Zwecke reicht es erst mal so, vielleicht auch für Eure :wink:

Den Teil der „Location-Url“ müsst Ihr Euch nach einer Suche auf www.tankentanken.de für Euren Standort rauskopieren. Ein Beispiel für Wiesbaden und 10 Kilometer Umkreis wäre …

$out = GetFuelPrice("65183%20-%20Wiesbaden/50.0833/8.25",10);
print_r($out);

Ist ein Preis für eine Sprit-Sorte nicht ermittelbar, wird entsprechend 0 zurück geliefert. Weiterhin hab ich die Preise schon mal gerundet, da mir das mit den kleinen Neunern auf den Zeiger geht :wink:

Und hier die Funktion:

function GetFuelPrice($locationUrl,$radius)
 {
  //Url zusammenbauen
    $providerUrl = "http://www.tankentanken.de/suche";  $dieselUrl = $providerUrl."/diesel/".$radius."/".$locationUrl."?sort=dist";
  $superUrl = $providerUrl."/supere5/".$radius."/".$locationUrl."?sort=dist";
  $bioUrl = $providerUrl."/supere10/".$radius."/".$locationUrl."?sort=dist";
  //Inhalt auslesen und Länge bestimmen
  $contentSuper = file($superUrl);
  $contentBio = file($bioUrl);
  $contentDiesel = file($dieselUrl);
  $lines = count($contentSuper);
  //Arrays durchgehen und Triggern
  $trigger = " | ";
  $arrayCounter = 0;
  for($i = 0; $i < $lines; $i++)
  {
   if(strpos($contentSuper[$i],$trigger) and !strpos($contentSuper[$i],"tankentanken"))
   {
    //Tankstelle und Straße formatieren
    $string = trim(CharDecode($contentSuper[$i]));
    $explode = explode($trigger,$string);
    $array[$arrayCounter]["Name"] = $explode[0]." Tankstelle";
    $street = $explode[1];
    $street = RemoveDigits($street);
    $street = str_replace(" Straße"," Str",$street);
    $street = str_replace(" Str"," Straße",$street);
    $street = str_replace(".","",$street);
    $array[$arrayCounter]["Street"] = $street;
    //Ort formatieren
    $string = trim(strtolower(CharDecode($contentSuper[$i + 4])));
    $string = RemoveDigits($string);
    $string = strtoupper(substr($string,1,1)).substr($string,2,strlen($string));
    $array[$arrayCounter]["City"] = $string;
    //Entfernung formatieren
    $string = trim($contentSuper[$i + 12]);
    $string = str_replace(",",".",$string);
    $string = str_replace(" km","",$string);
    $array[$arrayCounter]["Distance"] = floatval($string);
    //Preise formatieren und bestimmen, ob Tankstelle offen oder geschlossen ist
    $string = trim($contentSuper[$i - 17]);
    if(strpos($string,"--"))
    {
       $array[$arrayCounter]["State"] = "Geschlossen";
       $array[$arrayCounter]["PriceSuper"] = 0;
       $array[$arrayCounter]["PriceBio"] = 0;
       $array[$arrayCounter]["PriceDiesel"] = 0;
    }
    else
    {
       $array[$arrayCounter]["State"] = "Geöffnet";
     $array[$arrayCounter]["PriceSuper"] = round(floatval(CharDecode(trim($contentSuper[$i - 17]))),2);
     $array[$arrayCounter]["PriceBio"] = round(floatval(CharDecode(trim($contentBio[$i - 17]))),2);
     $array[$arrayCounter]["PriceDiesel"] = round(floatval(CharDecode(trim($contentDiesel[$i - 17]))),2);
     //print($contentBio[$i - 17]."
");
    }
    //Counter erhöhen
    $arrayCounter++;
   }
  }
  return $array;
 }

Ach so, ich nutze hier ein paar „Sub-Funktionen“, die ich auch von anderen Dingen her verwendet (CharDecode und RemoveDigits). Diese sind hier zu finden:

 function CharDecode($string)
 //$string = Eingabestring mit Sonderzeichen
 //Rückgabe = Ausgabestring mit Umlauten
 {
  $string = strip_tags($string);
  $string = html_entity_decode($string);
  $string = str_replace("         ", " ", $string);
  $string = str_replace("ö", "ö", $string);
  $string = str_replace("Ãœ", "Ü", $string);
  $string = str_replace("ü", "ü", $string);
  $string = str_replace("ä", "ä", $string);
  $string = str_replace("ß", "ß", $string);
  $string = str_replace("&ndash;", "-", $string);
  $string = str_replace('&#039;', "`", $string);
  $string = str_replace("&", "&", $string);
  $string = str_replace("Ö", "Ö", $string);
  $string = str_replace("Ä", "Ä", $string);
  $string = str_replace("„", "\"", $string);
  $string = str_replace("“", "\"", $string);
  $string = str_replace("–", "-", $string);
  $string = str_replace("„", "\"", $string);
  $string = str_replace("“", "\"", $string);
  $string = str_replace("„", "\"", $string);
  $string = str_replace("–", "-", $string);
  $string = str_replace("–", "-", $string);
  $string = str_replace("f r", "für", $string);
  $string = str_replace("Â?ber", "Über", $string);
  $string = str_replace("%C3%A4", "ä", $string);
  $string = str_replace("%C3%B6", "ö", $string);
  $string = str_replace("%C3%BC", "ü", $string);
  $string = str_replace("%C3%84", "Ä", $string);
  $string = str_replace("%C3%96", "Ö", $string);
  $string = str_replace("%C3%9C", "Ü", $string);
  $string = str_replace("%C3%9F", "ß", $string);
  $string = str_replace("=C3=A4", "ä", $string);
  $string = str_replace("=C3=B6", "ö", $string);
  $string = str_replace("=C3=BC", "ü", $string);
  $string = str_replace("=C3=84", "Ä", $string);
  $string = str_replace("=C3=96", "Ö", $string);
  $string = str_replace("=C3=9C", "Ü", $string);
  $string = str_replace("=C3=9F", "ß", $string);
  $string = str_replace("%20", " ", $string);
  $string = preg_replace("/\r|
/s", " ", $string);
  return $string;
 }

 function RemoveDigits($string)
 //Entfernt aus dem String alle Ziffern
 {
    $string = str_replace("0","",$string);
    $string = str_replace("1","",$string);
    $string = str_replace("2","",$string);
    $string = str_replace("3","",$string);
    $string = str_replace("4","",$string);
    $string = str_replace("5","",$string);
    $string = str_replace("6","",$string);
    $string = str_replace("7","",$string);
    $string = str_replace("8","",$string);
    $string = str_replace("9","",$string);
    return $string;
 }

Bei Fragen bitte melden … falls es doch rechtliche Probleme geben sollte, auch :wink:

Hallo Squeeezer,

ich nutze die Seite bereits seit Mitte Januar (siehe Post #64) und musste noch nichts ändern.
Bin auch der Meinung, dass es im Rahmen der AGB erlaubt ist, die Seite auszulesen.

Gruß, Peter

Habt ihr auch schon etwas erstellt das es Tabellarisch im WF angezeigt wird? wenn ja, könnte es mir einer zur Verfügung stellen? Danke.

Was mache ich mit den Codeschnipseln von oben? Alles in ein Programm und ausführen?

@pitty
Geht es mit der API besser?

Gruß
Bruno