일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- LinkedList
- Data structure
- 웹크롤링
- ubuntu python
- Kotlin
- Android
- 안드로이드 테스트
- Apollo GraphQL
- MVVM pattern
- Android test
- graphQL
- 우분투 파이썬
- Nexus GraphQL
- 자바기초
- prisma
- unit test
- PYTHON
- dagger-hilt
- Design Pattern
- 안드로이드 mvp
- Apollo Server
- 안드로이드
- 자바
- 안드로이드 디자인패턴
- java
- 파이썬 크롤링
- 유니티
- Dependency Injection
- flutter
- mvvm
- Today
- Total
Hun's Blog
[Python] 웹 크롤링 5 - selenium을 활용한 유튜브 키워드 검색하기 본문
참고
파이썬 레시피 - 웹 활용 입문편을 공부하면서 정리한 내용
유튜브에서 자동으로 키워드를 입력하고 검색해보자.
자동화를 위해선 python의 selenium 모듈이 필요하다.
유튜브는 크롬 웹브라우저에 최적화되어있기 때문에 크롬을 설치해야한다.
추가로 크롬 드라이버도 설치한다.
selenium?
다양한 브라우저 및 플랫폼에서 웹 응용프로그램을 위한 자동화 테스트 스위트이다.
웹 기반 응용 프로그램을 자동화하는 데 중점을 둔다.
단 하나의 도구가 아니라 소프트웨어의 모음이다.
여러 언어에서 웹 자동화 테스트 및 웹 자동화를 도와주는 라이브러리이다.
chrome driver?
크롬드라이버는 selenium webDriver가 Chrmoe을 제어하는 데 사용하는 별도의 실행파일이다.
webDriver 기고자의 도움을 받아 Chromium 팀에서 관리한다.
1. 설치
1-1 selenium 설치
sudo apt-get update
sudo pip3 install selenium
1-2 크롬 설치
sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
->인증키 등록
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ " >> /etc/apt/sources.list.d/google.list'
->크롬 브라우저 다운받을 PPA 추가 (/etc/apt/sources.list.d)
sudo apt-get update
->PPA 추가 후 apt-get update 하여 리스트 갱신
sudo apt-get install google-chorme-stable
->크롬 브라우저 설치
sudo rm -rf /etc/apt/sources.list.d/google.list
-> 설치완료후 google.list 파일 삭제
sudo apt-get clean
-> apt manager 가 다운 받은 설치파일을 삭제
sudo apt-get update
-> apt-get update 로 정상적으로 설치되었는지 확인
1-3 크롬 드라이버 설치
google-chrome --version
-> 크롬 버전확인 sudo wget https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_linux64.zip
-> 버전에 맞는 크롬 드라이버 다운로드
sudo unzip chromedriver_linux64
-> 크롬 드라이버 압축풀기
sudo mv chromedriver /var/www/html/pythonTut/basic
sudo chown root:root /var/www/html/pythonTut/basic
-> 크롬 드라이버 이동하여 실행 권한 주기
sudo chmod +x /var/www/html/pythonTut/basic
-> 자동화를 위해 chromedriver와 파이썬 파일을 같은 폴더에 놓는다.
2. 스크립트 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from selenium import webdriver
import time
wait = WebDriverWait(driver,10)
search = driver.find_element_by_name('search_query')
search.send_keys('we bare bears')
search.send_keys(Keys.ENTER)
|
2-1 driver = webdrive.Chrome('chromedriver')
-> webdriver의 Chrome() 메소드에 다운받은 크롬드라이버를 입력하여 자동화를 위한 셋팅을 한다.
-> driver 라는 변수에 담는다.
-> drvier 는 .get() 메소드를 사용할 수 있게되고 인자값으로 자동화를 진행할 페이지의 url을 입력한다.
-> 완료되면 크롬 드라이버가 직접 크롬 브라우저를 열어 해당 url 페이지를 자동으로 열람한다.
2-2 wait = WebDriverWait(driver,10)
from selenium.webdriver.support.ui import WebDriverWait
-> selenium 도구모음에서 webdriver에 support.ui 에 있는 WebDriverWait 메소드를 import 하고있다.
-> 여기서 selenium의 존재이유를 확인할 수 있다.
-> 단순히 http request를 보내면 데이터가 완전히 로딩되기 전에 보내져 빈 껍데기가 오는 경우가 있다.
-> 원하는 데이터가 완전히 로딩될때까지 기다렸다가 온전한 데이터를 받기위해 selenium을 사용한다.
-> WebDriverWait() 에 크롬드라이버와 time 을 입력한다.
-> 10초 내에 해당 드라이버의 정보를 찾으면 반환하고 그렇지 않으면 timeoutd이 발생한다.
-> 명시적인 페이지 로드 대기에 사용된다.
2-3 time.sleep(3)
-> time 모듈은 시간을 다루는 단순하지만 다양한 기능을 제공하는 모듈이다.
-> time 모듈의 sleep()메소드를 사용하여 시간을 입력하면 지정 시간동안 프로세스를 일시정지 할 수 있다.
2-4 search = driver.find_element_by_name('search_query')
-> webdriver의 find_element_by_name() 메소드에 name 이 'search_query'인 태그를 찾아온다.
-> 찾아온 태그를 search 라는 변수에 담는다.
아래 이미지를 보면 name이 search_query인 태그는 input -> 검색창 이라는 것을 알 수 있다.
2-5 search.send_keys('we bare bears')
-> search에 담긴 태그에 webdriver의 send_keys() 메소드에 데이터를 입력하여 전송할 수 있다.
2-6 search.send_keys(Kyes.ENTER)
from selenium.webdriver.common.keys import Keys
-> selenium 도구모음의 webdriver.common.keys 모듈의 Keys() 메소드를 가져온다.
-> Keys() 메소드는 키보드 각각의 key를 상수로 지정해두고 있다. ex)Keys.ENTER, Keys.SPACE
-> send_keys() 메소드에 Keys(Keys.ENTER) 를 입력하여 전송한다.
-> 전달받은 크롬 드라이버 측에서는 ENTER 를 누르라는 것으로 판단하여 Enter를 자동으로 눌러 검색을 진행한다.
'Language > Python' 카테고리의 다른 글
[Python] 웹 크롤링 7 - 색감테스트 봇 구현 (0) | 2020.04.06 |
---|---|
[Python] 웹 크롤링 6 - 1 to 50 봇 (0) | 2020.04.06 |
[Python] 웹 크롤링 4 - 네이버 웹툰 썸네일 가져오기 (0) | 2020.04.06 |
[Python] 웹 크롤링 3 - 네이버 웹툰 제목 가져오기 (0) | 2020.04.05 |
[Python] 웹 크롤링 2 - Python BeautifulSoup4, requests 설치 + 네이버 날씨 미세먼지 가져오기 (0) | 2020.04.05 |