>  기사  >  백엔드 개발  >  자동화된 웹 크롤러에 대한 실용 가이드: PHP와 Selenium을 사용하여 웹 크롤러 구축

자동화된 웹 크롤러에 대한 실용 가이드: PHP와 Selenium을 사용하여 웹 크롤러 구축

WBOY
WBOY원래의
2023-06-15 16:44:571535검색

웹 크롤러는 오늘날 인터넷 세계에서 가장 중요한 도구 중 하나가 되었습니다. 웹 크롤러는 인터넷의 다양한 웹사이트를 자동으로 탐색하고 사람들에게 필요한 유용한 정보를 추출할 수 있습니다. 자동화된 웹 크롤러의 핵심 기술은 프로그래밍 언어와 다양한 도구를 사용해 자동으로 데이터를 처리할 수 있는 프로그램을 구축하는 것이다.

최근 몇 년 동안 Selenium은 자동화된 웹 크롤링 분야에서 가장 인기 있는 도구 중 하나가 되었습니다. 클릭, 스크롤, 타이핑 등 브라우저에서 다양한 작업을 수행하는 사용자를 시뮬레이션하고 웹 페이지에서 데이터를 얻을 수도 있는 크로스 브라우저 자동화 테스트 도구입니다. Selenium은 프로그램이 일반 사용자와 동일한 방식으로 데이터를 얻을 수 있도록 해주기 때문에 자동화된 웹 크롤러를 구축하는 데 이상적입니다.

이 글에서는 PHP와 Selenium을 사용하여 자동화된 웹 크롤러를 구축하는 방법을 소개합니다. 본 기사에 소개된 크롤러 프로그램은 지정된 웹사이트를 자동으로 탐색하고 모든 기사의 제목, 저자, 발행일, 기사 링크 등 관련 정보를 추출하여 최종적으로 CSV 파일로 저장합니다.

시작하기 전에 PHP, Selenium 및 WebDriver(브라우저 드라이버에 해당)를 설치해야 합니다. 이 글의 내용은 다음과 같습니다.

  1. 환경 설정 및 기본 구성

먼저 로컬 환경에 PHP를 설치해야 합니다. PHP 7 이상을 권장합니다. 다음으로 Selenium을 설치하려면 Composer를 사용하면 됩니다. 프로젝트 폴더에서 작곡가 명령을 사용하여 설치하면 PHP 프로그램 작성을 시작할 수 있습니다.

  1. WebDriver 및 Selenium API 호출

Selenium을 사용하여 자동화된 웹 크롤러를 구축하기 전에 WebDriver를 호출하고 WebDriver 인스턴스를 생성하여 지정된 브라우저와 통신해야 합니다. WebDriver는 브라우저 드라이버 인터페이스이며, 브라우저마다 다른 WebDriver가 필요합니다.

PHP에서는 Selenium의 PHP 클라이언트 라이브러리를 사용하여 WebDriver 인스턴스를 생성하고 이를 지정된 브라우저의 WebDriver와 바인딩할 수 있습니다. 샘플 코드는 다음과 같습니다.

require_once 'vendor/autoload.php';
use FacebookWebDriverRemoteDesiredCapabilities;
use FacebookWebDriverRemoteRemoteWebDriver;

// 配置浏览器类型、路径、驱动、和端口
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $capabilities);
  1. 브라우저 세션 설정 및 대상 웹사이트 열기

브라우저 세션 생성에는 코드 한 줄만 필요하며 선호하는 브라우저(Firefox 또는 Chrome)를 선택할 수 있습니다.

여기에서는 Chrome 브라우저를 사용하겠습니다. 샘플 코드는 다음과 같습니다.

// 使用Chrome浏览器打开目标网站
$driver->get('https://example.com');
  1. 데이터 찾기 및 추출

대상 웹사이트를 열고 페이지를 로드한 후 필요한 데이터의 요소를 찾아 가져와야 합니다. 이 예에서는 대상 웹사이트에 있는 모든 기사의 제목, 저자, 출판 날짜 및 기사 링크를 찾습니다.

샘플 코드는 다음과 같습니다.

// 查找所有文章标题
$titles = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

// 查找作者名字
$author_names = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .author-name'));

// 查找发布日期
$release_dates = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article .release-date'));

// 查找文章链接
$links = $driver->findElements(FacebookWebDriverWebDriverBy::cssSelector('article h2 a'));

각 기사의 데이터를 찾아 추출하는 샘플 코드는 다음과 같습니다.

$articles = array();

foreach ($titles as $key => $title) {
    // 提取标题
    $article_title = $title->getText();

    // 提取作者
    $article_author = $author_names[$key]->getText();

    // 提取发布日期
    $article_date = $release_dates[$key]->getText();

    // 提取文章链接
    $article_link = $links[$key]->getAttribute('href');

    // 添加文章到数组
    $articles[] = array(
        'title' => $article_title,
        'author' => $article_author,
        'date' => $article_date,
        'link' => $article_link
    );
}
  1. 결과는 CSV 파일에 저장됩니다.

마지막 단계는 추출된 데이터를 저장하는 것입니다. CSV 파일로. PHP 내장 함수 fputcsv()를 사용하여 데이터를 CSV 파일에 저장할 수 있습니다.

다음은 샘플 코드입니다.

// 文件流方式打开文件
$file = fopen('articles.csv', 'w');

// 表头
$header = array('Title', 'Author', 'Date', 'Link');

// 写入标题
fputcsv($file, $header);

// 写入文章数据
foreach ($articles as $article) {
    fputcsv($file, $article);
}

// 关闭文件流
fclose($file);

컨텐츠 추출 및 데이터 처리가 종료됩니다. CSV 파일의 데이터는 후속 분석 및 적용에 사용될 수 있습니다. 또한 추가 처리를 위해 데이터를 다른 데이터베이스로 가져올 수 있습니다.

요약하자면, 이 기사에서는 PHP와 Selenium을 사용하여 자동화된 웹 크롤러를 구축하는 방법과 대상 웹사이트의 데이터를 획득 및 처리하고 이를 CSV 파일로 저장하는 방법을 살펴보았습니다. 이 예는 SEO, 경쟁 제품 분석 등 웹 사이트에서 데이터를 가져와야 하는 다양한 시나리오에 적용할 수 있는 간단한 데모입니다.

위 내용은 자동화된 웹 크롤러에 대한 실용 가이드: PHP와 Selenium을 사용하여 웹 크롤러 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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