python?

파이썬으로 네이버 검색기 사용하기

3년안에 내집 마련 2019. 12. 3. 21:07
반응형

python 공부 중 selenium 모듈 사용법을 익히기 위해 인터넷을 찾던 중 간단한 selenium 예시가 있어서 가지고 왔다.

selenium 모듈에 대한 자세한 설명이 나와있는 사이트는 https://selenium-python.readthedocs.io/

 

Selenium with Python — Selenium Python Bindings 2 documentation

Note This is not an official documentation. If you would like to contribute to this documentation, you can fork this project in Github and send pull requests. You can also send your feedback to my email: baiju.m.mail AT gmail DOT com. So far 40+ community

selenium-python.readthedocs.io

이다.

다음 사이트의 예시 중 하나인 파이썬에서 검색해보기 코드 해석 및 실행해보도록 하겠다.

1. selenium 모듈 불러오기

selenium 모듈을 사용하기 위해서는 selenium 모듈을 설치해야한다.

파이참에서는 File -> settings(ctrl+alt+s) -> project -> project Interpreter를 선택하면

다음과 같이 현재 설치되어 있는 모듈들을 확인 할 수 있다.

이제 여기서 + 버튼을 누른 후 검색창에 'selenium'을 입력하고 엔터를 누르면

다음과 같이 나오는데 Install Package를 누르면 selenium 모듈을 설치할 수 있다.

 

2. 크롬 드라이버 설치

다음으로는 크롬 드라이버를 설치해야한다.

크롬 드라이버는https://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

에서 다운 받을 수 있는데 이 때 자신의 크롬 버전과 동일한 버전의 크롬 드라이버를 설치해야 한다.

크롬 정보 확인하기

1. 크롬 오른 쪽에 점 3개 클릭 

2. 도움말 클릭

3. chrome 정보 확인 클릭

다음과 같이 하면

자신의 크롬 버전을 확인할 수 있다.

자신의 크롬 버전을 확인했으면 자신의 버전에 맞는 chrome driver를 설치해준다.

자신의 OS에 맞게 chromedriver를 설치한다.

다음과 같이 설치가 완료되면 chrome driver를 불러오는 코드를 작성해주어야 한다.

form selenium import webdriver

path = r'webdriver 설치 경로\chromedriver.exe'
driver = webdriver.Chrome(path)

다음과 같이 코드를 작성하면  chromedriver를 사용할 수 있다.

 

3. naver 사이트 불러오기

이제 chromedriver에서 naver.com을 불러와서 제대로 불러왔는지 확인해보자

driver.get("https://www.naver.com/")
assert "NAVER" in driver.title

driver.get()함수는 chrome에서 네이버 페이지를 불러오는 함수이다.

assert 함수는 python에서 가정문을 의미하는 함수로써 현재 불러온 페이지에 제목이 NAVER인지 확인을 하고 만약 NAVER가 아니면 예외처리를 하라는 뜻이다.

 

4. 검색창 쿼리 찾기

이제 검색창에 검색을 위해 검색창을 담당하는 코드를 찾아야 한다.

검색창을 담당하는 코드를 찾기 위해 F12를 누른 후 다음과 같은 버튼을 누른 후

검색창을 클릭하면 검색창 코드가 나온다.

검색창 코드를 보면 input 태그에 id가 "query"라고 되어 있다. 

이제 이 query라는 값을 elem이라는 변수에 저장해보자

elem = driver.find_element_by_name("query")
elem.clear()

elem 변수에 query라는 이름을 찾았을 때 그 값을 집어 넣고

그 값에 이상한 값이 들어 있을 수 있으니  clear 함수를 사용해서 비워준다

 

5. 검색할 내용 적기

elem.send_keys("오래된 노래")
elem.submit()
assert "에 대한 검색결과가 없습니다." not in driver.page_source

elem.send_keys()함수를 이용해서 내가 검색할 내용을 input 값으로 지원한다.

그 후 elem.submit()함수를 사용해 enter를 해준다.

elem.send_keys(Keys.RETURN)을 이용해 enter를 해줄 수 있는데 나같은 경우에는 Keys.RETURN이 에러를 일으켜 elem.submit을 이용했다.

 

6. 창 닫기

다음과 같이 정상적으로 검색이 되는지 확인한 후 페이지를 닫아주면 된다.

페이지를 닫을때는 driver.close()함수를 사용하면 된다.

 

7. 전체 코드

from selenium import webdriver


path = r'C:\Users\박상근\Desktop\chrome\chromedriver.exe'
driver = webdriver.Chrome(path)

driver.get("https://www.naver.com/")
assert "NAVER" in driver.title
elem = driver.find_element_by_name("query")
elem.clear()
elem.send_keys("오래된 노래")
elem.submit()

assert"에 대한 검색결과가 없습니다." not in driver.page_source
driver.close()

 

반응형