1. 리눅스 설정 : php webdriver를 활용한 크롤링
- 프로그래밍/크롤링
- 2022. 5. 9.
사용환경
- 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
2-5) 크롬드라이버 실행 종료
lsof -i tcp:4444
kill -9 pid입력
사용법
1) 컴포저 확인 및 설치
2) webdriver 라이브러리 설치
curl -sS https://getcomposer.org/installer | php
php composer.phar require php-webdriver/webdriver
3) 소스코드 (코드이그나이터에서 컴포저 사용 설정해줘야함)
- 원본 소스 코드 : 깃헙에서 example.php
//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
'프로그래밍 > 크롤링' 카테고리의 다른 글
4. 윈도우 설정 : php webdriver를 활용한 크롤링 (0) | 2022.05.16 |
---|---|
윈도우 컴포저 windows composer 설치 및 사용 (0) | 2022.05.16 |
3. xPath사용법 : php webdriver를 활용한 크롤링 (0) | 2022.05.10 |
2. 사용법 : php webdriver를 활용한 크롤링 (0) | 2022.05.09 |
Headless Browser란? (0) | 2022.05.06 |