일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- #opencv
- word embedding
- text2img
- #프로젝트
- 영어
- keras
- c언어
- tensorflow update
- 완전탐색
- #실생활 영어
- #English
- #영어 명언
- findContours
- convexhull
- #Android
- #영어
- python 알고리즘
- python __init__
- TensorFlow
- tokenizing
- object detection
- Convolution Neural Network
- #일상영어
- python list
- 딥러닝
- opencv SURF
- #실생활영어
- #1일1영어
- 영어명언
- 이미지 생성
- Today
- Total
When will you grow up?
Selenium을 이용한 네이버 로그인 접근 및 원하는 정보 얻기 본문
크롤링(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
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
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
|
# 결과 로그인 버튼이 클릭되고, 네이버는 보안문자를 입력하게 되어 있지만 보인문자 입력이 없는 사이트는 자동 로그인이 가능하다..
전체 코드 : 클릭