Heim  >  Artikel  >  Backend-Entwicklung  >  Codebeispiel für PHP zum Crawlen von Bildern und zum lokalen Speichern

Codebeispiel für PHP zum Crawlen von Bildern und zum lokalen Speichern

不言
不言nach vorne
2019-01-28 09:51:043941Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Codebeispiel zum Crawlen von Bildern mit PHP und zum lokalen Speichern. Freunde in Not können darauf verweisen.

Überprüfen Sie die Verwendung mehrerer PHP-Funktionen anhand eines einfachen Beispiels

Verwendete Funktionen oder Wissenspunkte

  • Curl sendet Netzwerkanfragen

  • preg_match Reguläre Übereinstimmung

Code

$url     = 'http://desk.zol.com.cn/bizhi/7386_91671_2.html';
$headers = [
    'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'
];
$ch      = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);     //将curl_exec()获取的信息以字符串返回,而不是直接输出。
curl_setopt($ch, CURLOPT_HEADER, $headers);
$output = curl_exec($ch);
curl_close($ch);
$str = mb_convert_encoding($output, 'utf-8', 'gb2312');
//或$str = iconv('gb2312//IGNORE', 'utf-8', $output);

preg_match(&#39;!<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>!&#39;, $str, $m);
file_put_contents(&#39;./meinv.&#39; . $m[&#39;ext&#39;], file_get_contents($m[&#39;src&#39;]));

Wirkung

Codebeispiel für PHP zum Crawlen von Bildern und zum lokalen Speichern

Erklärung

curl sendet eine Anfrage

Die Schritte zum Herstellen einer Curl-Verbindung in PHP sind im Allgemeinen: Initialisierung, Festlegen von Optionen, Ausführen von Vorgängen und Freigeben der Verbindung.

$ch = curl_init();
curl_setopt($ch, CURLOPT, $opt);
$out = curl_exec($ch);
curl_close();

Häufig verwendete CURLOPT Einstellungen, für weitere Referenzdokumente http://php.net/manual/zh/function.curl-setopt.php

CURLOPT_URL, string //设置url必须
CURLOPT_HEADER, array //设置请求header
CURLOPT_RETURNTRANSFER, bool //为true时,以字符串返回响应,不包含header
CURLOPT_SSL_VERIFYPEER, bool //为false时,不验证https证书,用于请求https的url
CURLOPT_POST, int //为1时配合CURLOPT_POSTFIELDS使用post请求,默认使用get
CURLOPT_POSTFIELDS, array //post数据数组

$output direkt ausgeben und gefunden Verstümmelte Zeichen Bei der Überprüfung des Quellcodes haben wir festgestellt, dass die Webseite die GB2312-Codierung verwendet und mb_convert_encoding oder iconv verwendet, um sie in die UTF-8-Codierung und Ausgabe zu konvertieren.

preg_match reguläre Übereinstimmung

Beim Betrachten des Quellcodes haben wir festgestellt, dass das von uns benötigte Bild-Tag 881a53237dd000bfcb4d4e6ec4bec98f

Regulärer Ausdruck

<img id="bigImg" src="(?<src>http.*\.(?<ext>jpg|png))".*>

.* Entspricht allen, (?8a11bc632ea32a57b3e3693c7987c420) Mithilfe der Gruppierung können Sie einfach $match['name'] verwenden, um den gewünschten Teil zu erhalten

Schließlich $match[ 'src'] Rufen Sie die tatsächliche URL des Bildes ab und speichern Sie es über file_put_contents, auch wenn es abgeschlossen ist


Das obige ist der detaillierte Inhalt vonCodebeispiel für PHP zum Crawlen von Bildern und zum lokalen Speichern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen