2009-08-07 18 views
0
$url = 'the web address I want to get the first and second numbers close to $' ; 
$str = file_get_contents($url); 

preg_match_all('/ ([$]) *(\d+(:?.\d+)?)/', $str, $matches, PREG_SET_ORDER); 

$i=0; 
foreach ($matches as $val) { 
    if($i==0) $first=$val[2] ; 
    if($i==3) $second=$val[2] ; 
    $i++;  
} 
$bad_symbols = array(",", "."); $first = str_replace($bad_symbols, "", $first); 
$bad_symbols = array(",", "."); $second = str_replace($bad_symbols, "", $second); 

echo $first . "</br>"; 
echo $second; 

es funktionierte gut bis gestern was könnte das Problem sein?PHP Code Scraping eine URL plötzlich nicht mehr funktioniert

+6

Haben Sie sich das Ergebnis von file_get_contents ($ url) angesehen? Vielleicht verändert die Website, die Sie scrapen, etwas. – nos

+0

Was ist der genaue Fehler, den Sie bekommen? –

+0

Also, was ist das Problem? Was macht es jetzt? – EFraim

Antwort

0

Möglicherweise hat der Systemadministrator die Anweisung allow_url_fopen geändert, dh Sie können nicht auf Dateien zugreifen, die sich nicht auf Ihrem Server befinden. Überprüfen Sie, was file_get_contents() zurückgibt, weil Sie uns sehr wenig Informationen über Fehler gegeben haben.

Ein weiteres Problem, wie oben erwähnt, könnte sein, dass Remote-Standort geändert wurde :)

3

ich mindestens zwei mögliche Erklärungen siehe:

  • Der HTML-Code der Website hat sich geändert; vielleicht nur ein bisschen - aber genug, um dich in Schwierigkeiten zu bringen.
    • Sie für den Rückgabewert von preg_match_all
    • testen konnten, wenn es falsch ist, es bedeutet, dass Ihr Regex nicht - was den Inhalt des HTML nicht die gleichen ...
    • Dann Pageis kann darauf hindeuten, , haben Sie vielleicht Ihre Regex ändern
  • der Admin des Servers (oder es kann die Seite im Code erfolgen Erzeugen) hat man
    • vielleicht hat die Website erfasst verboten wurde von Ihnen verschrottet (entweder weil Sie zu hart auf ihren Server gegangen sind oder sie ihren Inhalt auf Ihrer Website gesehen haben)
    • Und sie verboten Ihre IP (zum Beispiel)
    • Um dies zu erkennen, versuchen Sie, den Rückgabewert zu erhalten von file_get_contents; Wenn es falsch ist, könnte es die Ursache des Problems sein
    • Können Sie versuchen, diese HTML-Seite von Ihrem Server zu bekommen, mit wget in der Befehlszeile?
  • Ein dritter, wie von anderen suggestd: vielleicht die Konfiguration des Servers hat sich geändert, und Sie können file_get_content über HTTP nicht mehr verwenden ...
    • Eine Lösung curl zu verwenden wäre, zum Beispiel
    • Check in Ihrer Konfiguration der allow_url_fopen Richtlinie

Wenn Sie aktivieren error_reporting (see also), könnten Sie auch einige Informationen erhalten, die sich als nützlich erweisen könnten ...

Verwandte Themen