爬虫实战PHP 抓取天气数据
PHP 抓取天气数据
阅读并理解网页源代码的结构和 CSS 格式,是编写 PHP 爬虫程序的关键。在本实战案例中,我们将使用可变网址来抓取不同城市的天气数据,然后解析 HTML 标签以获取所需的信息,最后将结果输出。
第一步:获取网页内容
在 PHP 中获取网页内容有多种方法,其中包括 file_get_contents、curl 和 fsockopen 等。下面是一个使用 file_get_contents 函数获取网页内容的例子。我们将 URL 地址存储在 $url 变量中,使用 file_get_contents 函数获取网址的 HTML 内容。
$url = "https://tianqi.moji.com/weather/china/hubei/huangshi";
$html = file_get_contents($url);
第二步:解析 HTML 标签
HTML 解析器允许我们将 HTML 文档转换为 PHP 可以理解的格式。在 PHP 中,有多种 HTML 解析器可供使用,例如 Simple HTML DOM 和 DOMDocument 等。以下是使用 DOMDocument 解析 HTML 标签的例子。我们将使用 getElementsByTagName 函数获取我们需要的标签,并使用 foreach 循环遍历每个标签,将它们存储在 $weatherData 数组中。
$dom = new DOMDocument();
$dom->loadHTML($html);
$weatherData = array();
$spans = $dom->getElementsByTagName('span');
foreach ($spans as $span) {
if ($span->getAttribute('class') == 'wea') {
$weatherData['weather'] = $span->nodeValue;
}
if ($span->getAttribute('class') == 'tem') {
$weatherData['temperature'] = $span->nodeValue;
}
}
第三步:输出结果
将抓取的天气数据以某种格式输出是很有用的,因为它使其他程序或用户可以轻松地读取数据。在本例中,我们将数据输出为 JSON 格式,并将其存储在 $output 变量中。然后,使用 PHP 中的 echo 函数将整个 JSON 字符串输出到屏幕上。
$output = json_encode($weatherData);
echo $output;
总结
在本实战案例中,我们演示了如何使用 PHP 编写一个简单的爬虫来抓取天气数据。我们使用 file_get_contents 函数获取网页内容,使用 DOMDocument 解析 HTML 标签,并将我们需要的数据输出为 JSON 格式。通过使用这些技术,您可以编写复杂的爬虫程序来获取各种数据,并将其转换为任何您喜欢的格式。