Heim > Artikel > Backend-Entwicklung > Praktischer Crawler-Kampf: PHP crawlt Wetterdaten
In der modernen Gesellschaft sind Wetterinformationen zu einem unverzichtbaren Bestandteil des Lebens der Menschen geworden. Ganz gleich, ob es um Reisepläne, Reisearrangements oder die Abstimmung des heutigen Outfits geht, Sie müssen sich auf genaue Wettervorhersagen verlassen können. Doch wie werden Wettervorhersagedaten gewonnen? Tatsächlich werden diese Wettervorhersagedaten von einigen spezialisierten Wetterdaten-Websites bereitgestellt und können problemlos über Webcrawler erfasst werden. In diesem Artikel wird am Beispiel des Abrufens von Wettervorhersagedaten einer bestimmten Stadt erläutert, wie mit PHP ein Crawler zum Erfassen von Wetterdaten geschrieben wird.
1. Analysieren Sie die Zielwebsite
Vor dem Crawlen müssen Sie zunächst die Quellcodestruktur der Zielwebsite analysieren und die Position der Informationen verstehen, die Sie im Quellcode abrufen müssen. Hier nehmen wir als Beispiel „China Weather Network“ (http://www.weather.com.cn/). Diese Website bietet Wettervorhersagen für verschiedene Städte. Wir möchten die Wettervorhersageinformationen für eine bestimmte Stadt erfassen.
Öffnen Sie den Browser und besuchen Sie die Website, geben Sie den Namen der Zielstadt ein, z. B. „Peking“, und klicken Sie auf „Abfrage“. Zu diesem Zeitpunkt wird die Wettervorhersage der Stadt für heute und die nächsten 7 Tage angezeigt. Dies sind die Informationen, die wir erfassen möchten. Wenn Sie den Quellcode der Webseite mit den Entwicklertools des Browsers analysieren, können Sie erkennen, dass die Wettervorhersageinformationen in einem div-Tag mit der ID „7d“ enthalten sind.
2. Schreiben des Crawler-Programms
Nachdem wir die Quellcodestruktur der Zielwebsite analysiert haben, können wir mit dem Schreiben des Crawler-Programms beginnen. Zunächst müssen Sie einige Konstanten und Variablen definieren, um einige Konfigurationsinformationen zu speichern, z. B. die Zielstadt, die URL der Zielwetterdaten usw.
// 目标城市名称 $city_name = '北京'; // 目标城市天气数据URL $url = 'http://www.weather.com.cn/weather/101010100.shtml';
Der nächste Schritt ist die Kernlogik des Crawlers. Zuerst müssen Sie die CURL-Bibliothek verwenden, um eine HTTP-Anfrage zu stellen und die Wettervorhersageseite der Zielstadt abzurufen, dann die HTML-Seite analysieren, um die erforderlichen Daten zu erhalten, und schließlich die Daten zur späteren Verarbeitung in einer Datei speichern.
// 初始化 CURL,获取天气预报页面 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $page_content = curl_exec($ch); // 解析天气预报页面,获取需要的信息 $doc = new DOMDocument(); $doc->loadHTML($page_content); $xpath = new DOMXPath($doc); // 获取未来 7 天天气预报信息 $days = $xpath->query('//div[@id="7d"]//div[@class="con"]/ul/li'); // 遍历天气预报信息,保存到文件中 $file = fopen('weather.txt', 'a+'); foreach($days as $day) { $date = trim($day->getElementsByTagName('h1')->item(0)->nodeValue); $conditions = $day->getElementsByTagName('p')->item(0)->nodeValue; $min_temperature = $day->getElementsByTagName('span')->item(0)->nodeValue; $max_temperature = $day->getElementsByTagName('span')->item(1)->nodeValue; $line = sprintf("%s%s %s %s ", $city_name, $date, $min_temperature, $max_temperature); fwrite($file, $line); } fclose($file); // 关闭 CURL curl_close($ch);
3. Führen Sie das Crawler-Programm aus
Nachdem Sie das Crawler-Programm fertig geschrieben haben, können Sie das Programm ausführen und Wetterdaten abrufen. Wechseln Sie im Terminal in das Verzeichnis, in dem sich das Programm befindet, und geben Sie den folgenden Befehl ein, um das Programm auszuführen.
php weather_spider.php
Die Ausführung des Programms kann je nach Ladegeschwindigkeit der Wetterdatenseite der Zielstadt einige Zeit dauern. Anhand der Konsolenausgabe können wir jedoch erkennen, dass das Programm erfolgreich ausgeführt wurde und die Wettervorhersageinformationen in der Datei gespeichert wurden.
4. Zusammenfassung
In der Einleitung dieses Artikels haben wir gelernt, wie man mit PHP ein Webcrawler-Programm schreibt, um Daten von der Zielwebsite abzurufen. Obwohl Webcrawler über leistungsstarke Datenerfassungsfunktionen verfügen, müssen sie auch auf einige ethische und rechtliche Aspekte achten, z. B. darauf, die Websites anderer Personen nicht böswillig anzugreifen, den Datenschutz anderer Personen zu verletzen usw. Ich hoffe, dass jeder beim Einsatz von Webcrawlern die einschlägigen gesetzlichen Vorschriften und ethischen Standards einhalten und die Webcrawler-Technologie sinnvoll nutzen kann.
Das obige ist der detaillierte Inhalt vonPraktischer Crawler-Kampf: PHP crawlt Wetterdaten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!