>  기사  >  백엔드 개발  >  자동화된 크롤러를 위한 필수 기술: PHP 및 Selenium 사용 소개

자동화된 크롤러를 위한 필수 기술: PHP 및 Selenium 사용 소개

王林
王林원래의
2023-06-15 22:52:431968검색

오늘날의 디지털 시대에는 인터넷에서 데이터를 크롤링하는 것이 일반적인 요구 사항이 되었습니다. 대규모 데이터 수집 및 분석을 위해서는 자동화된 크롤러의 사용이 매우 필요합니다. Selenium은 웹 테스트 및 자동화에 널리 사용되는 도구인 반면, PHP는 널리 사용되는 웹 프로그래밍 언어입니다. 이 기사에서는 PHP와 Selenium을 사용하여 자동화된 크롤러를 구현하고 필요한 데이터를 크롤링하는 방법을 소개합니다.

1. Selenium 및 WebDriver 설치

Selenium을 사용하기 전에 Selenium을 다운로드해야 합니다. 다음을 통해 설치할 수 있습니다:

composer require php-webdriver/webdriver

이렇게 하면 웹드라이버를 성공적으로 다운로드하고 코드에서 사용할 수 있습니다. 다음으로, 프로그램이 호출할 수 있도록 Chrome 웹드라이버와 같은 브라우저의 웹드라이버를 설치해야 합니다. Chrome 공식 웹사이트에서 해당 버전의 webdriver를 다운로드할 수 있습니다.

2. Selenium의 기본 사용법

Selenium과 webdriver를 설치한 후 이를 사용하여 브라우저를 자동으로 실행할 수 있습니다. 다음은 간단한 코드 예입니다.

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('http://www.google.com');
$element = $driver->findElement(WebDriverBy::name('q'));
$element->sendKeys('Selenium');
$element->submit();
echo $driver->getTitle();

이 코드 조각은 먼저 로컬 Chrome 브라우저에 연결하기 위한 원격 웹 드라이버 개체를 생성합니다. 그런 다음 Google을 열고 "Selenium"을 입력하고 검색을 수행합니다. 마지막으로 브라우저의 페이지 제목이 출력됩니다.

3. Selenium을 사용하여 크롤링

Selenium에 대한 기본 지식을 바탕으로 이를 사용하여 자동화된 크롤러를 구축할 수 있습니다. 다음은 지정된 웹 페이지의 모든 링크를 크롤링할 수 있는 간단한 코드 예제입니다.

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('https://www.example.com');

$links = $driver->findElements(WebDriverBy::tagName('a'));

foreach ($links as $link) {
    $url = $link->getAttribute('href');
    echo $url . "

";

}

이 코드 조각은 Selenium을 사용하여 웹 사이트를 방문하고 이 웹 사이트의 모든 링크를 얻습니다. getAttribute('href') 함수를 호출하여 href 속성의 값을 가져오고 최종적으로 발견된 모든 링크를 출력합니다.

4. PHP로 자동화된 크롤러 구현

위의 코드 예는 Selenium을 결합하여 사용합니다. 다음은 페이징 기술을 사용하여 Baidu 검색 결과의 처음 10페이지를 크롤링하는 샘플 코드입니다.

use FacebookWebDriverRemoteRemoteWebDriver;
use FacebookWebDriverWebDriverBy;

$driver = RemoteWebDriver::create('http://localhost:9515', DesiredCapabilities::chrome());
$driver->get('https://www.baidu.com/s?wd=php');

$pageNumber = 10;

for ($i = 1; $i <= $pageNumber; $i++) {
     echo "page {$i}

";

     $links = $driver->findElements(WebDriverBy::xpath('//div[@class="result c-container "]//h3[@class="t"]/a'));

     foreach ($links as $link) {
         $url = $link->getAttribute('href');
         echo $url . "

";

     }

     $nextPageElement = $driver->findElement(WebDriverBy::xpath('//a[@class="n" and contains(text(),"下一页>")]'));

     $driver->executeScript("arguments[0].scrollIntoView();", [$nextPageElement]);

     $nextPageElement->click();
 }

위의 코드 조각이 먼저 열립니다. Baidu 검색 결과 페이지로 이동한 후 각 페이지의 모든 검색 결과를 순회하고 각 검색 결과의 링크 주소를 출력합니다. 페이지를 순회한 후 페이지 하단으로 스크롤하여 한 페이지에서 다음 버튼을 클릭합니다.

요약

Selenium과 PHP를 사용하여 자동화된 크롤러를 구축하는 것은 매우 효율적인 방법입니다. Selenium은 자동화된 크롤러를 구축하는 데 필요한 많은 핵심 기능을 제공하는 반면, PHP는 Selenium을 통해 자동화된 크롤러를 구현하는 빠르고 간단하며 편리한 방법을 제공합니다. 크롤러 이러한 기술을 익히면 자동화된 크롤러를 더 잘 활용하여 필요한 데이터를 빠르고 효율적으로 수집할 수 있습니다.

위 내용은 자동화된 크롤러를 위한 필수 기술: PHP 및 Selenium 사용 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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