Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 우분투
- 옵티머스 g
- 20.04
- 제주도
- upbit
- Ubuntu 20.04
- 맥
- codeigniter
- 우분투 20.04
- 셀레니움
- FMS
- ubuntu
- Selenium
- php
- 프레임워크
- 라즈베리파이
- TiL
- C
- 맛집
- 라즈비안
- 회고
- Laravel
- Raspberry Pi
- 옵지
- 옵G
- 라라벨
- 업비트
- 코드이그나이터
- MySQL
- 옵티머스g
Archives
- Today
- Total
평범한 이야기들
[Selenium] php-webdriver를 이용해 네이버 데이터랩 쇼핑인사이트 인기검색어 가져오기 본문
평범한 개발 이야기/ETC
[Selenium] php-webdriver를 이용해 네이버 데이터랩 쇼핑인사이트 인기검색어 가져오기
songsariya 2021. 1. 20. 16:44728x90
Selenium 서버를 설치하고 나서 네이버 데이터랩 쇼핑인사이트 인기 검색어를 가져오기 위해 작업을 진행했습니다. 저는 github에 있는 php-webdriver를 이용했습니다.
https://github.com/php-webdriver/php-webdriver
해당 주소로 들어가 clone으로 프로그램을 다운로드합니다. 그러면 루트 폴더에 example.php 파일이 존재하는 해당 내용을 참고해서 만드시면 됩니다. 추가 정보는 해당 페이지 wiki에 존재하니 참고하시면 되겠습니다. 인기 검색어의 위치를 파악하기 위해 크롬의 개발자 도구를 이용합니다.
해당 위치를 알게 되었으니 Xpath 문법을 이용해 해당 위치를 지정해주면 됩니다. 해당 위치는 아래와 같이 xpath 경로로 만들 수 있습니다.
[@id="content"]/div[2]/div/div[2]/div[2]/div/div/div[1]/ul/li[1]/a
xpath의 괄호는 배열을 의미합니다. 즉 div[2] 이면 해당 위치에 있는 div 중 2번째 div를 뜻합니다. 즉 마지막 li[1]은 <li> 리스트의 첫 번째이고 롱패딩입니다. [2]한다면 2번째 여성롱패딩의 위치가 됩니다. 해당 정보를 이용해 프로그래밍을 해주면 됩니다.
php-webdriver를 이용해 코딩을 진행한 소스코드입니다.
<?php
namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
require_once('vendor/autoload.php');
// This is where Selenium server 2/3 listens by default. For Selenium 4, Chromedriver or Geckodriver, use http://localhost:4444/
$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::chrome();
$driver = RemoteWebDriver::create($host, $capabilities);
// 네이버 데이터랩 쇼핑인사이트
$driver->get('https://datalab.naver.com/shoppingInsight/sCategory.naver');
sleep(2);
// 인기검색어 1-20 까지 텍스트 가져오기
for($j = 1; $j < 21; $j++ ) {
$element = $driver->findElement(WebDriverBy::xpath('//*[@id="content"]/div[2]/div/div[2]/div[2]/div/div/div[1]/ul/li['.$j.']/a'));
$sample[] = $element->gettext();
}
print_r($sample);
// close the browser
$driver->quit();
위 프로그램을 실행하면 아래와 같습니다.
이렇게 손쉽게 해당 데이터를 가져올 수 있습니다. 다른 카테고리의 검색어를 가져오고 싶으시면 해당 카테고리를 클릭하는 로직을 추가해주시면 됩니다.
728x90
Comments