>백엔드 개발 >PHP 튜토리얼 >실용적인 크롤러 전투: 날씨 데이터를 크롤링하는 PHP

실용적인 크롤러 전투: 날씨 데이터를 크롤링하는 PHP

WBOY
WBOY원래의
2023-06-13 08:11:131133검색

현대사회에서 날씨정보는 사람들의 생활에 없어서는 안 될 부분이 되었습니다. 여행 계획, 여행 준비, 오늘의 의상 매칭 등 무엇이든 정확한 일기 예보에 의존해야 합니다. 그런데 일기예보 데이터는 어떻게 얻나요? 실제로 이러한 기상예보 데이터는 일부 기상정보 전문 사이트에서 제공하는 것으로, 이러한 기상정보는 웹 크롤러를 통해 쉽게 수집할 수 있습니다. 이 기사에서는 특정 도시의 일기 예보 데이터를 얻는 것을 예로 들어 PHP를 사용하여 날씨 데이터를 캡처하는 크롤러를 작성하는 방법을 소개합니다.

1. 대상 웹사이트 분석

크롤링에 앞서 먼저 대상 웹사이트의 소스코드 구조를 분석하고 소스코드에서 얻어야 할 정보의 위치를 ​​파악해야 합니다. 여기서는 "China Weather Network"(http://www.weather.com.cn/)를 예로 들어 보겠습니다. 이 웹사이트는 다양한 도시의 일기예보를 제공합니다. 우리가 포착하려는 것은 특정 도시의 일기예보 정보입니다.

브라우저를 열고 웹사이트에 접속하여 "Beijing" 등 대상 도시 이름을 입력한 후 Query를 클릭하세요. 이때, 오늘부터 향후 7일 동안의 도시 일기예보가 표시됩니다. 이것이 우리가 포착하고 싶은 정보입니다. 브라우저의 개발자 도구를 사용하여 웹 페이지 소스 코드를 분석하면 ID가 "7d"인 div 태그에 일기 예보 정보가 포함되어 있음을 확인할 수 있습니다.

2. 크롤러 프로그램 작성

대상 웹사이트의 소스 코드 구조를 분석한 후 크롤러 프로그램 작성을 시작할 수 있습니다. 먼저, 대상 도시, 대상 날씨 데이터의 URL 등과 같은 일부 구성 정보를 저장하기 위해 몇 가지 상수와 변수를 정의해야 합니다.

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

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

다음 단계는 크롤러의 핵심 로직입니다. 먼저 CURL 라이브러리를 사용하여 HTTP 요청을 하고 대상 도시의 일기 예보 페이지를 얻은 다음 HTML 페이지를 구문 분석하여 필요한 데이터를 얻은 다음 마지막으로 후속 처리를 위해 데이터를 파일에 저장해야 합니다.

// 初始化 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. 크롤러 프로그램 실행

크롤러 프로그램 작성이 완료되면 프로그램을 실행하고 날씨 데이터를 얻을 수 있습니다. 터미널에서 프로그램이 있는 디렉터리로 전환하고 다음 명령을 입력하여 프로그램을 실행합니다.

php weather_spider.php

대상 도시의 날씨 데이터 페이지 로딩 속도에 따라 프로그램 실행에 다소 시간이 걸릴 수 있습니다. 그러나 콘솔 출력을 관찰하면 프로그램이 성공적으로 실행되고 일기 예보 정보가 파일에 저장되었음을 알 수 있습니다.

4. 요약

이 글의 소개를 통해 우리는 PHP를 사용하여 대상 웹사이트에서 데이터를 얻는 웹 크롤러 프로그램을 작성하는 방법을 배웠습니다. 웹 크롤러는 강력한 데이터 수집 기능을 갖추고 있지만 다른 사람의 웹사이트를 악의적으로 공격하지 않거나 다른 사람의 데이터 개인정보를 침해하지 않는 등 윤리적, 법적 문제에도 주의를 기울여야 합니다. 모두가 웹 크롤러를 사용할 때 관련 법규와 윤리 기준을 준수하고, 웹 크롤러 기술을 합리적으로 활용할 수 있기를 바랍니다.

위 내용은 실용적인 크롤러 전투: 날씨 데이터를 크롤링하는 PHP의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.