PHP 및 phpSpider를 사용하여 대량의 데이터를 일괄적으로 크롤링하는 방법에 대한 팁을 공유합니다!
인터넷의 급속한 발전으로 인해 대용량 데이터는 정보화 시대의 가장 중요한 자원 중 하나가 되었습니다. 많은 웹사이트와 애플리케이션에서는 이 데이터를 크롤링하고 획득하는 것이 중요합니다. 이 기사에서는 PHP 및 phpSpider 도구를 사용하여 대규모 데이터의 일괄 크롤링을 수행하는 방법을 소개하고 시작하는 데 도움이 되는 몇 가지 코드 예제를 제공합니다.
phpSpider 설치 및 구성
먼저 PHP와 Composer를 설치한 다음 Composer를 통해 phpSpider를 설치해야 합니다. 터미널을 열고 다음 명령을 실행합니다.
composer require duskowl/php-spider
설치가 완료된 후 프로젝트 디렉터리에서 다음 명령을 사용하여 새 크롤러 스크립트를 생성할 수 있습니다.
vendor/bin/spider create mySpider
이렇게 하면 현재 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을 저장합니다. 이 예에서는 데이터를 터미널에 간단히 인쇄하고 필요에 따라 데이터베이스나 파일에 저장할 수 있습니다.
크롤러 실행
크롤러 로직을 작성한 후 터미널에서 다음 명령을 실행하여 크롤러를 실행할 수 있습니다.
vendor/bin/spider run mySpider
이렇게 하면 자동으로 페이지 크롤링 및 처리가 시작되고 결과가 터미널에 출력됩니다.
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
이렇게 하면 크롤러가 실행됩니다. 예약된 작업으로 설정한 시간 간격에 따라 크롤링합니다.
위 내용은 PHP 및 phpSpider를 사용하여 대량의 데이터를 일괄적으로 크롤링하는 방법에 대한 팁을 공유합니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!