Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie file_get_contents und Curl, um eine Sammlung zu schreiben

Verwenden Sie file_get_contents und Curl, um eine Sammlung zu schreiben

PHP中文网
PHP中文网Original
2017-07-29 18:27:011666Durchsuche

Es wird häufig festgestellt, dass sich die zu verwendenden Daten auf derselben Website befinden und das Datenanzeigeformat dasselbe ist. Wenn Sie die Informationen beispielsweise manuell eingeben, werden die Daten auf Taobao oder Amazon angezeigt Zu diesem Zeitpunkt können wir ein Erfassungsprogramm schreiben, um es direkt zu erfassen und anzuzeigen. Der Server unterstützt file_get_contents und curl

Fügen Sie zunächst ein Textfeld und eine Schaltfläche zum Senden zur Seite hinzu. Das Textfeld wird zur Eingabe der Adresse der Sammlungsseite verwendet.

Sammlung muss die reguläre Abfangfunktion verwenden

function preg_substr($start, $end, $str) // 正则截取函数      
{      
    $temp = preg_split($start, $str);      
    $content = preg_split($end, $temp[1]);      
    return $content[0];      
}


Sammlung muss die String-Abfangfunktion verwenden

function str_substr($start, $end, $str) // 字符串截取函数      
{      
    $temp = explode($start, $str, 2);      
    $content = explode($end, $temp[1], 2);      
    return $content[0];      
}


Es gibt auch eine Funktion zum Speichern der gesammelten Inhalte:

function writelog($str)
{
@unlink("log.txt");
$open=fopen("log.txt","a" );
fwrite($open,$str);
fclose($open);
}

Manchmal stimmen die gesammelten Inhalte nicht mit den Inhalten überein, die wir über den Browser anzeigen, was dazu führt, dass wir dies nicht können Finden Sie den richtigen regulären Ausdruck. Hier können Sie die gespeicherte TXT-Datei öffnen und die richtige abgefangene Zeichenfolge darin finden.


Wenn Sie Bilder sammeln müssen, müssen Sie die Bildfunktion verwenden:

function getImage($url, $filename='', $dirName, $fileType, $type=0)
{
    if($url == ''){return false;}
    //获取文件原文件名
    $defaultFileName = basename($url);
    //获取文件类型
    $suffix = substr(strrchr($url,'.'), 1);
    if(!in_array($suffix, $fileType)){
        return false;
    }
    //设置保存后的文件名
    $filename = $filename == '' ? time().rand(0,9).'.'.$suffix : $defaultFileName;
          
    //获取远程文件资源
    if($type){
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $file = curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $file = ob_get_contents();
        ob_end_clean();
    }
    //设置文件保存路径
    $dirName = $dirName.'/'.date('Y', time()).'/'.date('m', time()).'/'.date('d',time()).'/';
    if(!file_exists($dirName)){
        mkdir($dirName, 0777, true);
    }
    //保存文件
    $res = fopen($dirName.$filename,'a');
    fwrite($res,$file);
    fclose($res);
    return $dirName.$filename;
}

Fügen Sie den Sammlungscode hinzu, da Sie den Sammlungscode hier hinzufügen erlaubt keine Einreichung, direkt über dem Bild;

Nehmen wir als Beispiel eine Produktseite auf Amazon: Geben Sie einen Produktlink ein:

Sehen Sie sich die Sammlungsergebnisse wie unten gezeigt an. Nur der Inhalt wird hier angezeigt. Es ist relativ einfach, es zur Datenbank hinzuzufügen. Jetzt werde ich die Sammlung von automatisch eingegebenen Links auf niedrigerer Ebene oder dem automatischen Umblättern von Seiten vorstellen.

Das obige ist der detaillierte Inhalt vonVerwenden Sie file_get_contents und Curl, um eine Sammlung zu schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn