Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pertempuran perangkak praktikal: data cuaca merangkak PHP

Pertempuran perangkak praktikal: data cuaca merangkak PHP

WBOY
WBOYasal
2023-06-13 08:11:131064semak imbas

Dalam masyarakat moden, maklumat cuaca telah menjadi bahagian yang sangat diperlukan dalam kehidupan manusia. Sama ada rancangan perjalanan, aturan perjalanan atau padanan pakaian hari ini, anda perlu bergantung pada ramalan cuaca yang tepat. Namun, bagaimanakah data ramalan cuaca diperoleh? Malah, data ramalan cuaca ini disediakan oleh beberapa tapak web data cuaca khusus, dan data cuaca ini boleh ditangkap dengan mudah melalui perangkak web. Artikel ini akan mengambil mendapatkan data ramalan cuaca bandar tertentu sebagai contoh untuk memperkenalkan cara menggunakan PHP untuk menulis perangkak untuk menangkap data cuaca.

1. Analisis tapak web sasaran

Sebelum merangkak, anda perlu menganalisis struktur kod sumber tapak web sasaran dan memahami lokasi maklumat yang perlu anda perolehi dalam kod sumber. Di sini kami mengambil "Rangkaian Cuaca China" (http://www.weather.com.cn/) sebagai contoh Laman web ini menyediakan ramalan cuaca untuk pelbagai bandar.

Buka penyemak imbas dan lawati tapak web, masukkan nama bandar sasaran, seperti "Beijing", dan klik Pertanyaan. Pada masa ini, ramalan cuaca bandar untuk hari ini dan 7 hari akan datang ini adalah maklumat yang ingin kami tangkap. Menggunakan alat pembangun penyemak imbas untuk menganalisis kod sumber halaman web, anda boleh melihat bahawa maklumat ramalan cuaca terkandung dalam teg div dengan id "7d".

2. Menulis program perangkak

Selepas menganalisis struktur kod sumber tapak web sasaran, kita boleh mula menulis program perangkak. Mula-mula, anda perlu menentukan beberapa pemalar dan pembolehubah untuk menyimpan beberapa maklumat konfigurasi, seperti bandar sasaran, URL data cuaca sasaran, dsb.

// 目标城市名称
$city_name = '北京';

// 目标城市天气数据URL
$url = 'http://www.weather.com.cn/weather/101010100.shtml';

Langkah seterusnya ialah logik teras crawler. Mula-mula, anda perlu menggunakan perpustakaan CURL untuk membuat permintaan HTTP dan mendapatkan halaman ramalan cuaca bandar sasaran, kemudian menghuraikan halaman HTML untuk mendapatkan data yang diperlukan, dan akhirnya menyimpan data ke fail untuk pemprosesan seterusnya.

// 初始化 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. Jalankan program crawler

Selepas melengkapkan penulisan program crawler, anda boleh menjalankan program dan mendapatkan data cuaca. Beralih ke direktori di mana program terletak di terminal dan masukkan arahan berikut untuk menjalankan program.

php weather_spider.php

Program ini mungkin mengambil sedikit masa untuk dijalankan, bergantung pada kelajuan pemuatan halaman data cuaca bandar sasaran. Tetapi dengan memerhatikan output konsol, kita dapat melihat bahawa program telah berjalan dengan jayanya dan maklumat ramalan cuaca telah disimpan ke dalam fail.

4. Ringkasan

Melalui pengenalan artikel ini, kami mempelajari cara menggunakan PHP untuk menulis program perangkak web untuk mendapatkan data daripada tapak web sasaran. Walaupun perangkak web mempunyai keupayaan pemerolehan data yang berkuasa, mereka juga perlu memberi perhatian kepada beberapa isu etika dan undang-undang, seperti tidak menyerang tapak web orang lain secara berniat jahat, melanggar privasi data orang lain, dsb. Saya harap semua orang boleh mematuhi peraturan undang-undang dan piawaian etika yang berkaitan apabila menggunakan perangkak web, dan menggunakan teknologi perangkak web secara munasabah.

Atas ialah kandungan terperinci Pertempuran perangkak praktikal: data cuaca merangkak PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn