PHP 및 phpSpider를 사용하여 대량의 데이터를 일괄적으로 크롤링하는 방법에 대한 팁을 공유합니다!

王林
풀어 주다: 2023-07-22 18:20:02
원래의
829명이 탐색했습니다.

PHP 및 phpSpider를 사용하여 대량의 데이터를 일괄적으로 크롤링하는 방법에 대한 팁을 공유합니다!

인터넷의 급속한 발전으로 인해 대용량 데이터는 정보화 시대의 가장 중요한 자원 중 하나가 되었습니다. 많은 웹사이트와 애플리케이션에서는 이 데이터를 크롤링하고 획득하는 것이 중요합니다. 이 기사에서는 PHP 및 phpSpider 도구를 사용하여 대규모 데이터의 일괄 크롤링을 수행하는 방법을 소개하고 시작하는 데 도움이 되는 몇 가지 코드 예제를 제공합니다.

  1. 소개
    phpSpider는 PHP 기반의 오픈 소스 크롤러 도구로, 사용이 간편하고 강력하며 웹사이트의 데이터를 빠르고 효율적으로 크롤링하는 데 도움이 됩니다. phpSpider를 기반으로 자체 스크립트를 작성하여 일괄 크롤링을 구현할 수 있습니다.
  2. phpSpider 설치 및 구성
    먼저 PHP와 Composer를 설치한 다음 Composer를 통해 phpSpider를 설치해야 합니다. 터미널을 열고 다음 명령을 실행합니다.

    composer require duskowl/php-spider
    로그인 후 복사

    설치가 완료된 후 프로젝트 디렉터리에서 다음 명령을 사용하여 새 크롤러 스크립트를 생성할 수 있습니다.

    vendor/bin/spider create mySpider
    로그인 후 복사

    이렇게 하면 현재 mySpider.php라는 파일이 생성됩니다. 디렉터리에 크롤러 논리를 작성할 수 있습니다.

  3. 크롤러 로직 작성
    mySpider.php 파일을 열면 몇 가지 기본 코드 템플릿을 볼 수 있습니다. 우리의 필요에 맞게 일부 부분을 수정해야 합니다.

먼저 크롤링할 시작 URL과 추출할 데이터 항목을 정의해야 합니다. mySpider.php에서 생성자 __construct()를 찾아 다음 코드를 추가합니다.

public function __construct()
{
    $this->startUrls = [
        'http://example.com/page1',
        'http://example.com/page2',
        'http://example.com/page3',
    ];
    $this->setField('title', 'xpath', '//h1'); // 抽取页面标题
    $this->setField('content', 'xpath', '//div[@class="content"]'); // 抽取页面内容
}
로그인 후 복사

startUrls 배열에서 크롤링할 시작 URL을 정의할 수 있습니다. 이러한 URL은 단일 페이지일 수도 있고 여러 페이지의 목록일 수도 있습니다. setField() 함수를 설정하면 추출할 데이터 항목을 정의할 수 있고 xpath 또는 정규 표현식을 사용하여 페이지 요소를 찾을 수 있습니다.

다음으로 크롤링된 데이터를 처리하기 위한 콜백 함수를 작성해야 합니다. handler() 함수를 찾아 다음 코드를 추가하세요.

public function handle($spider, $page)
{
    $data = $page['data'];
    $url = $page['request']['url'];
    echo "URL: $url
";
    echo "Title: " . $data['title'] . "
";
    echo "Content: " . $data['content'] . "

";
}
로그인 후 복사

이 콜백 함수에서는 $page 변수를 사용하여 크롤링된 페이지 데이터를 얻을 수 있습니다. $data 배열에는 우리가 정의한 추출된 데이터 항목이 포함되어 있으며 $url 변수는 현재 페이지의 URL을 저장합니다. 이 예에서는 데이터를 터미널에 간단히 인쇄하고 필요에 따라 데이터베이스나 파일에 저장할 수 있습니다.

  1. 크롤러 실행
    크롤러 로직을 작성한 후 터미널에서 다음 명령을 실행하여 크롤러를 실행할 수 있습니다.

    vendor/bin/spider run mySpider
    로그인 후 복사

    이렇게 하면 자동으로 페이지 크롤링 및 처리가 시작되고 결과가 터미널에 출력됩니다.

  2. 더 고급 기술
    위에 소개된 기본 기능 외에도 phpSpider는 대규모 데이터를 크롤링해야 하는 요구 사항에 더 잘 대처하는 데 도움이 되는 많은 유용한 기능을 제공합니다. 다음은 몇 가지 고급 기술입니다.

5.1 동시 크롤링
많은 양의 크롤링이 필요한 시나리오의 경우 동시 크롤링 수를 설정하여 크롤링 속도를 높일 수 있습니다. mySpider.php 파일에서 __construct() 함수를 찾아 다음 코드를 추가합니다.

function __construct()
{
    $this->concurrency = 5; // 设置并发数
}
로그인 후 복사

동시성 변수를 원하는 동시성으로 설정하여 동시 크롤링 요청 수를 제어합니다.

5.2 예약 크롤링
정기적으로 데이터를 크롤링해야 하는 경우 phpSpider에서 제공하는 예약 작업 기능을 사용할 수 있습니다. 먼저 mySpider.php 파일에서 startRequest() 함수를 설정해야 합니다. 예:

public function startRequest()
{
   $this->addRequest("http://example.com/page1");
   $this->addRequest("http://example.com/page2");
   $this->addRequest("http://example.com/page3");
}
로그인 후 복사

그런 다음 터미널에서 다음 명령을 실행하여 크롤러를 정기적으로 실행할 수 있습니다.

chmod +x mySpider.php
./mySpider.php
로그인 후 복사

이렇게 하면 크롤러가 실행됩니다. 예약된 작업으로 설정한 시간 간격에 따라 크롤링합니다.

  1. 요약
    phpSpider에서 자체 크롤러 스크립트를 작성하면 대량의 데이터를 일괄적으로 크롤링해야 하는 요구 사항을 충족할 수 있습니다. 이 문서에서는 phpSpider의 설치 및 구성은 물론 크롤러 논리 작성을 위한 기본 단계를 소개하고 시작하는 데 도움이 되는 몇 가지 코드 예제를 제공합니다. 동시에 우리는 막대한 양의 데이터를 크롤링해야 하는 필요성에 더 잘 대처하는 데 도움이 되는 몇 가지 고급 기술도 공유했습니다. 이 팁이 도움이 되기를 바랍니다!

위 내용은 PHP 및 phpSpider를 사용하여 대량의 데이터를 일괄적으로 크롤링하는 방법에 대한 팁을 공유합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿