>백엔드 개발 >PHP 튜토리얼 >PHP 기반 웹 크롤러 만들기

PHP 기반 웹 크롤러 만들기

WBOY
WBOY원래의
2023-05-11 12:10:35666검색

인터넷의 급속한 발전과 함께 정보의 획득과 활용이 점점 더 중요해지고 있습니다. 자동화된 프로그램인 웹 크롤러는 인터넷에서 정보를 신속하게 크롤링하고 처리할 수 있도록 도와주므로 정보 활용 효율성이 크게 향상됩니다. 이 글에서는 PHP를 사용하여 간단한 웹 크롤러를 만드는 방법을 설명하겠습니다.

1. 웹 크롤러에 대한 기본 지식

웹 크롤러는 웹 페이지에서 사람의 탐색 동작을 시뮬레이션하고 웹 페이지에서 관련 정보를 자동으로 크롤링할 수 있는 자동화된 프로그램입니다. 웹 크롤러는 검색 엔진 크롤링, 데이터 마이닝, 가격 비교, 콘텐츠 집계 등 다양한 용도로 사용됩니다.

웹 크롤러의 실행 과정은 대략 다음과 같습니다.

  1. 크롤링할 웹 페이지 주소를 결정합니다.
  2. 대상 웹페이지에 HTTP 요청을 하고 응답을 받으세요.
  3. 응답에서 필요한 데이터를 추출합니다.
  4. 데이터를 처리하고 저장합니다.

웹 크롤러의 핵심은 HTML 문서를 구문 분석하고 필요한 정보를 추출하는 것입니다. PHP에서는 DOMDocument 클래스나 SimpleXMLElement 클래스를 사용하여 XML 문서를 구문 분석하고, 정규 표현식이나 문자열 함수를 사용하여 HTML 문서를 구문 분석할 수 있습니다.

2. PHP 기반 웹 크롤러 만들기

아래에서는 실제 예를 사용하여 Douban 영화 순위에 대한 영화 정보를 크롤링할 수 있는 PHP 기반 웹 크롤러를 만드는 방법을 설명합니다.

  1. 크롤링할 웹페이지 주소 결정

크롤링하려는 대상은 Douban 영화 순위이며 URL은 https://movie.douban.com/chart입니다.

  1. 대상 웹페이지에 HTTP 요청을 하고 응답을 받습니다.

PHP에서는 cURL 라이브러리를 사용하여 HTTP 요청을 보내고 응답을 받을 수 있습니다. cURL은 HTTP, FTP, SMTP 등과 같은 여러 프로토콜을 지원하는 오픈 소스 네트워크 라이브러리입니다.

다음은 cURL 라이브러리를 사용하여 HTTP 요청을 보내는 예입니다.

$url = "https://movie.douban.com/chart";
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $ url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response =curl_exec($ch);
curl_close($ch);

위 코드에서는 먼저 웹 페이지 주소를 다음과 같이 정의합니다. 크롤링된$ URL을 탐색하고, 컬_init() 함수를 사용하여 cURL 세션을 초기화합니다. 그런 다음, curl_setopt() 함수를 사용하여 요청할 URL, 응답 반환 여부 등 컬 옵션을 설정합니다. 마지막으로, 컬_exec() 함수를 사용하여 HTTP 요청을 보내고 응답을 받은 다음, 컬_close() 함수를 사용하여 cURL 세션을 닫습니다.

  1. 응답에서 필수 데이터 추출

응답을 받은 후 응답에서 필수 영화 정보를 추출해야 합니다. 두반 영화 순위에서는 각 영화마다 고유한 ID가 있으며, 이 ID를 기반으로 각 영화에 대한 자세한 정보를 얻을 수 있습니다.

다음은 정규 표현식을 사용하여 영화 ID를 추출하는 예입니다.

$pattern = '/ce47a1571fbc4e91103bbda1e91edcf6.?(.?)/s';
preg_match_all($ 패턴, $response, $matches);

위 코드에서는 영화 ID와 영화 이름을 일치시키는 정규식 $pattern을 정의합니다. preg_match_all() 함수를 사용하여 응답을 일치시키고 일치하는 모든 결과를 $matches 배열에 저장합니다.

다음으로, 이전에 얻은 영화 ID를 사용하여 각 영화의 세부 정보를 얻을 수 있습니다. 여기서는 SimpleXMLElement 클래스를 사용하여 XML 문서를 구문 분석하고 영화 정보를 추출합니다. 다음은 영화 정보를 추출하는 예입니다. 위의

foreach ($matches[1] as $url) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$xml = new SimpleXMLElement($response);
echo "电影名称:" . $xml->xpath('//title')[0] . "

";

echo "导演:" . $xml->xpath('//a[@rel="v:directedBy"]/text()')[0] . "

";

echo "主演:" . implode(", ", $xml->xpath('//a[@rel="v:starring"]/text()')) . "

";

echo "评分:" . $xml->xpath('//strong[@class="ll rating_num"]/text()')[0] . "

";
}

코드에서는 각 영화의 ID를 반복하고 cURL 라이브러리를 사용하여 각 영화의 세부 정보를 가져옵니다. 그런 다음 SimpleXMLElement 클래스를 사용하여 XML 문서를 구문 분석하고 영화 이름, 감독, 주연 역할 및 등급과 같은 정보를 추출합니다.

  1. 데이터 처리 및 저장

마지막으로 추출된 영화 정보를 처리하고 저장할 수 있습니다. 여기서는 echo 문을 사용하여 결과를 명령줄 창에 출력합니다.

데이터를 데이터베이스에 저장하려면 PDO 또는 mysqli 확장을 사용하여 데이터베이스에 연결하고 해당 테이블에 데이터를 삽입할 수 있습니다.

3. 요약

웹 크롤러는 인터넷에서 정보를 빠르게 얻고 추가 ​​처리를 수행하는 데 도움이 되는 일반적으로 사용되는 자동화 프로그램입니다. PHP에서는 cURL 라이브러리를 사용하여 HTTP 요청을 보내고, DOMDocument 클래스 또는 SimpleXMLElement 클래스를 사용하여 XML 문서 또는 정규식을 구문 분석하여 HTML 문서와 일치시킴으로써 웹 크롤러 개발을 실현할 수 있습니다. 이 기사가 웹 크롤러에 대한 기본 지식을 이해하고 PHP를 사용하여 웹 크롤러를 만드는 데 도움이 되기를 바랍니다.

위 내용은 PHP 기반 웹 크롤러 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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