When will you grow up?

Selenium을 이용한 네이버 로그인 접근 및 원하는 정보 얻기 본문

02. Study/Crawling

Selenium을 이용한 네이버 로그인 접근 및 원하는 정보 얻기

미카이 2019. 8. 14. 00:03

크롤링(crawling)은 웹 페이지의 내용을 가지고 오는 것을 말하며 스크래핑(scraping)이라고도 부른다.

구굴, 네이버, 다음과 같은 검색 엔진 사이트들은 검색 속도를 높이기 위해 로봇(robot) 프로그램을 만들어서 자동으로 웹 페이지를 크롤링 할 수 있게 만들었으며, 무분별한 크롤링을 막고 제어하기 위해 로봇 배제 규약을 만들고 robot.txt 에 들어가서 크롤링 허가 / 불허가 여부를 이 파일에 적어 놓자고 약속한 규약이다.

구글에서서 로봇 정보를 보고 싶다면, https://www.google.com/robots.txt 접속 후 확인할 수 있다.

 

ex)

[Robots.txt]

예 ) 홈페이지 전체가 모든 검색엔진에 허용되지 않음
User
agent: *
Disallow: /


예 )홈페이지 디렉토리중 일부만 검색엔진에 허용되지 싶음
User
agent: *
Disallow: /my_photo/
Disallow: /my_diary/


예 ) 홈페이지 전체를 허용하지만 특정 검색엔진 ( 만 거부
User
agent: EvilRobot
Disallow: /

 

 

'Selenium'는 일반적으로 웹앱을 테스트하는데 이용하는 프레임워크이며, google에서 제공하는 크롬 web driver API를 이용하여 Chrome, firefox 등 브라우저를 제어할 수 있다.

그렇다면 이제 selenium을 이용해서 웹 페이지에 자동으로 접근하고, 원하는 정보를 얻어보자

 

1. selenium 설치 -> pip install selenium

 

2. 'chrome web driver' 설치 -> https://sites.google.com/a/chromium.org/chromedriver/downloads -> 나는 'ChromeDriver 2.46' 버전을 설치하였다.

 

3. 설치한 chromedriver.exe 파일을 driver 폴더 생성 후 폴더 안에다가 복사

 

테스트 해 볼 .ipynb파일 같은 경로에 driver를 만들어 chromedriver을 넣어놨다. 

1
2
3
4
5
6
7
8
9
10
11
12
from selenium import webdriver
 
driver = webdriver.Chrome('driver/chromedriver')
 
elem_login = driver.find_element_by_id("id"# 현재 크롬에 떠 있는 웹페이지에서 id 속성 값이 id 인 element를 찾음
elem_login.send_keys("자신의 네이버 계정"# typing
 
elem_login = driver.find_element_by_id("pw")
elem_login.send_keys("자신의 네이버 비번")   
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

 

찾고자하는 element id 확인 방법 크롬에서 F12 누르고 확인

 

 

 

만약 자신이 클릭할 곳의 XPath를 찾고 싶다면, copy에서 copy XPath에서 찾을 수 있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from selenium import webdriver
 
driver = webdriver.Chrome('driver/chromedriver')
 
elem_login = driver.find_element_by_id("id")
elem_login.send_keys("test1")
 
elem_login = driver.find_element_by_id("pw")
elem_login.send_keys("test2")
 
xpath = """//*[@id="frmNIDLogin"]/fieldset/input""" # 복사한 xpath 를 다음 코드에 붙여 넣음
driver.find_element_by_xpath(xpath).click()
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

# 결과 로그인 버튼이 클릭되고, 네이버는 보안문자를 입력하게 되어 있지만 보인문자 입력이 없는 사이트는 자동 로그인이 가능하다..

 

전체 코드 : 클릭

 

Comments