1. 리눅스 설정 : php webdriver를 활용한 크롤링

사용환경

- php 8.x

- apache 2.4

- centos 7

- 코드이그나이터

 

사용 라이브러리

https://github.com/php-webdriver/php-webdriver

 


개발환경 설정

1) 크롬 설치

- 참고자료 : https://passwd.tistory.com/70

wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

# yum install : 패키지 기본 설치 명령
# yum localinstall : rpm 파일 설치 명령
yum localinstall google-chrome-stable_current_x86_64.rpm

# Xvfb 설치
yum install xorg-x11-server-Xvfb.x86_643

#버전확인
google-chrome --version

 

2) 크롬 드라이버 설치

- 최신버전 링크 : https://chromedriver.chromium.org/downloads

 

2-1) 위 링크 -> 해당 구글 드라이버 버전 주소 복사 

** google-chrome --version에서 나온 버전과 맞는 걸 찾아야함
ex) 구글 크롬 버전이 91.0.4472.114이면, 91.0.4472.XXX

 

2-2) 커맨드창에 명령어 wget 붙여넣기

wget https://chromedriver.storage.googleapis.com/91.0.4472.101/chromedriver_linux64.zip

 unzip ./chromedriver_linux64.zip

 

2-3) 드라이버 파일 이동 (아래 경로로 옮기는게 좋음)

mv chromedriver /usr/bin/chromedriver

whereis chromedriver


2-4) 크롬 드라이버 실행 (이때 방화벽열어둘 필요는 있는지?)

/usr/bin/chromedriver --port=4444

ChromeDriver was started successfully

2-5) 크롬드라이버 실행 종료

lsof -i tcp:4444

kill -9 pid입력

 

 

사용법

1) 컴포저 확인 및 설치

https://voidfunction-e.tistory.com/entry/%EC%BD%94%EB%93%9C%EC%9D%B4%EA%B7%B8%EB%82%98%EC%9D%B4%ED%84%B0%EC%97%90%EC%84%9C-composer-%EC%82%AC%EC%9A%A9

 

2) webdriver 라이브러리 설치

curl -sS https://getcomposer.org/installer | php

php composer.phar require php-webdriver/webdriver

 

3) 소스코드 (코드이그나이터에서 컴포저 사용 설정해줘야함)

- 원본 소스 코드 : 깃헙에서 example.php

 

- 참고자료 : https://voidfunction-e.tistory.com/entry/%EC%BD%94%EB%93%9C%EC%9D%B4%EA%B7%B8%EB%82%98%EC%9D%B4%ED%84%B0%EC%97%90%EC%84%9C-composer-%EC%82%AC%EC%9A%A9

//namespace Facebook\WebDriver;

use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;
use Facebook\WebDriver\WebDriverBy;
use Facebook\WebDriver\WebDriverExpectedCondition;
use Facebook\WebDriver\Cookie;

 

4) 에러 발생시

Type: Facebook\WebDriver\Exception\UnknownErrorException

Message: unknown error: Chrome failed to start: exited abnormally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

Filename: /home/wdriver/public_html/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php

해결방법 : 코드 추가

참고링크 : https://github.com/php-webdriver/php-webdriver/issues/614

$capabilities = DesiredCapabilities::chrome();
		
//코드 추가
$options = new ChromeOptions();
$options->addArguments(['--headless','--no-sandbox']);
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
//여기까지

$driver = RemoteWebDriver::create($host, $capabilities);

삭제방법

sudo yum remove google-chrome-stable

댓글

Designed by JB FACTORY