• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Seite durchsuchen (Funktioniert nicht)

jakestyler

Mitglied
Hallo,
ich arbeite gerade an einer Website zur Statusverfolgung von DHL Paketen (Brauche ich für eine App - kleiner Hinweis: Die API der DHL kann ich leider nicht benutzen). Dazu möchte ich die mobile Website der DHL mit Curl auf ein bestimmtes span durchsuchen.

Zur Verdeutlichung hier eine Beispielsendung bei DHL: https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592

Hier würde ich gerne den Inhalt von <div class="progressnumber"></div> auslesen.
Leider funktioniert weder dieses:
PHP:
$ch = curl_init('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
curl_setopt( $ch, CURLOPT_USERAGEND, "Internet Explorer" );ob_start();curl_exec( $ch );curl_close( $ch );$str = ob_get_contents();ob_end_clean();


preg_match_all("#<div class=\"progressnumber\">(.+?)</div>#", $str, $events);   
    $i=0;
    foreach($events[0] as $event => $dhl){
        echo $dhl;   
              $i++;
    }

noch dieses Script:

PHP:
$content = file_get_contents('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
if (strstr($content, '100%') === false) {echo 'Nicht geliefert.';} else {echo 'Geliefert!';}

Bei Script 1 wird das DIV gesucht, wobei auf der Seite 2 DIV's mit der gleichen Class existieren, beide allerdings mit gleichem Inhalt.
Bei Script 2 hingegen wird die Seite auf das Vorkommen von "100%" durchsucht (Habe es übrigens auch ohne % versucht).

Was mache ich falsch?

Danke schonmal!


P.S. error_reporting ist an und zeigt keine Fehler.
 
Werbung:
Hallo,
ich arbeite gerade an einer Website zur Statusverfolgung von DHL Paketen (Brauche ich für eine App - kleiner Hinweis: Die API der DHL kann ich leider nicht benutzen). Dazu möchte ich die mobile Website der DHL mit Curl auf ein bestimmtes span durchsuchen.

Zur Verdeutlichung hier eine Beispielsendung bei DHL: https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592

Hier würde ich gerne den Inhalt von <div class="progressnumber"></div> auslesen.
Leider funktioniert weder dieses:
PHP:
$ch = curl_init('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
curl_setopt( $ch, CURLOPT_USERAGEND, "Internet Explorer" );ob_start();curl_exec( $ch );curl_close( $ch );$str = ob_get_contents();ob_end_clean();


preg_match_all("#<div class=\"progressnumber\">(.+?)</div>#", $str, $events);  
    $i=0;
    foreach($events[0] as $event => $dhl){
        echo $dhl;  
              $i++;
    }

noch dieses Script:

PHP:
$content = file_get_contents('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
if (strstr($content, '100%') === false) {echo 'Nicht geliefert.';} else {echo 'Geliefert!';}

Bei Script 1 wird das DIV gesucht, wobei auf der Seite 2 DIV's mit der gleichen Class existieren, beide allerdings mit gleichem Inhalt.
Bei Script 2 hingegen wird die Seite auf das Vorkommen von "100%" durchsucht (Habe es übrigens auch ohne % versucht).

Was mache ich falsch?

Danke schonmal!


P.S. error_reporting ist an und zeigt keine Fehler.

Also wenn ich den Quelltext der Seite durchsuche, finde ich auch kein <div> mit der Klasse "progressnumber".
 
Bildschirmfoto%202014-05-06%20um%2014.00.46.png
 
Werbung:
Hallo,

hast dir den quelltext mal richtig angeschaut und nicht in aufbereitetr form wie dein bild?

HTML:
<div class="progresstext">962625607592</div><div class="progressnumber">40%        
                </div>
da der code so aussieht, also nach % sollte deine prüfung aufhören und nicht nicht das </div>

Cheffchen
 
Werbung:
Also, minimaler umbau:
PHP:
<?php
error_reporting(E_ALL);
$ch = curl_init('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
curl_setopt( $ch, CURLOPT_USERAGEND, "Internet Explorer" );ob_start();curl_exec( $ch );curl_close( $ch );$str = ob_get_contents();ob_end_clean();
preg_match_all("#<div class=\"progressnumber\">(.+?)%s#", $str, $events); 
    $i=0;
    foreach($events[0] as $event => $dhl){
        echo $dhl; 
              $i++;
    }
?>

Funktioniert leider weiterhin nicht. Bin richtig verzweifelt :$
 
müsste es nicht "CURLOPT_USERAGENT" sein?

und dann vll noch gültig... also sowas z.b. "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"
 
Also, minimaler umbau:
PHP:
<?php
error_reporting(E_ALL);
$ch = curl_init('https://mobil.dhl.de/sendung?query=sv_paket&sv-method=query&packet_id=962625607592');
curl_setopt( $ch, CURLOPT_USERAGEND, "Internet Explorer" );ob_start();curl_exec( $ch );curl_close( $ch );$str = ob_get_contents();ob_end_clean();
preg_match_all("#<div class=\"progressnumber\">(.+?)%s#", $str, $events);
    $i=0;
    foreach($events[0] as $event => $dhl){
        echo $dhl;
              $i++;
    }
?>

Funktioniert leider weiterhin nicht. Bin richtig verzweifelt :$

http://regex101.com/r/xM1iH8

Und anschließend:
PHP:
intval(' 20%   ');
 
Werbung:
Zurück
Oben