▣ 다음 로그인 후 메일 목록 크롤링
다음의 로그인 url과 메일 url을 가져온다.
login_url = 'https://logins.daum.net/accounts/signinform.do'
mail_url = 'https://mail.daum.net/'
id = '<본인아이디>'
pwd = '<본인패스워드>'
크롬 드라이버 열기
from selenium.webdriver import Chrome
driver = Chrome()
driver.get(login_url)
로그인
# 로그인 페이지 소스 체크
- 아이디와 패스워드는 name으로 가지고온다.
- 로그인 버튼은 id로 가지고 온다.
- send_keys()로 해당값을 입력한다.
#로그인 코드
#ID : name=id
# password : name=pw
#login button : id=loginBtn
id_input = driver.find_element_by_name('id')
pwd_input = driver.find_element_by_name('pw')
login_btn = driver.find_element_by_id('loginBtn')
print(type(id_input))
id_input.send_keys(id)
pwd_input.send_keys(pwd)
#로그인 버튼 클릭
login_btn.click()
메일 목록가지고 오기
# 메일 목록 페이지 소스 체크
- div#mailList 밑으로 메일목록들이 있다.
- <a.link_subject>태그 밑에 메일 상세정보를 볼 수 있는 링크와, 메일 제목이 들어있다.
# 메일 url가지고 오기
driver.get(mail_url)
# 메일 list 가지고 오기
link_list = driver.find_elements_by_css_selector('div#mailList a.link_subject')
for a in link_list:
link = a.get_attribute('href')
title = a.text.strip()
print(link, title, sep=' - ')
▣ 네이버 로그인 후 메일 목록 크롤링
네이버 메일 목록 크롤링은 Daum과 유사하나 로그인 방식이 다르기 때문에 그것만 다루도록 하겠다.
로그인
naver_login_url = 'https://nid.naver.com/nidlogin.login'
id = '<본인아이디>'
pwd = '<본인패스워드>'
#드라이버실행
from selenium.webdriver import Chrome
driver = Chrome()
driver.get(naver_login_url)
# 로그인 페이지 소스 체크
- id의 id는 'id', password의 id는 'pw'이다.
- 아이디와 패스워드 입력후 로그인 버튼을 누른다.(css_selector 이용)
# 로그인 코드
id_input = driver.find_element_by_id('id')
pwd_input = driver.find_element_by_id('pw')
btn = driver.find_element_by_css_selector('input[type=submit]')
네이버는 다음과 달리 send_keys()로 값 입력이 불가능하다.
아마 특수처리를 해 놓은것 같다.
따라서 pyperclip패키지를 사용해서 직접 값을 복사해서 붙여넣기를 한다.
pyperclip 패키지
클립보드를 이용해 copy & paste 지원
!pip install pyperclip
import pyperclip
pyperclip.copy('hello world')
#control+c ->클립보드에 문자열 저장
txt = pyperclip.paste()
#control+v 클립보드에 저장된 문자열을 반환.
pyperclip을 이용한 아이디와 비밀번호 입력
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action\_chains import ActionChains
import time
def copy\_paste(driver, element, text):
pyperclip.copy(text)
element.click()
#ActionChains : 명령어들을 모으는 역할
#ActionChains.perform() : 모인 명령어를 chain으로 묶인 순서대로 실행
action\_chain = ActionChains(driver).key\_down(Keys.CONTROL).send\_keys('v').key\_up(Keys.CONTROL)
action\_chain.perform()
time.sleep(1)
아이디와 패스워드입력
copy\_paste(driver, id\_input, id)
copy\_paste(driver, pwd\_input, pwd)
728x90
반응형
'Data Engineering > Crawling' 카테고리의 다른 글
[Crawling] Headless 브라우저 (0) | 2020.08.05 |
---|---|
[Crawling] YouTube 동영상 목록 크롤링 (0) | 2020.08.05 |
[Crawling] Selenium (0) | 2020.08.05 |
[Crawling] 쿠팡(Coupang)검색결과 크롤링 (3) | 2020.08.05 |
[Crawling] KOSPI 주가 크롤링 (0) | 2020.08.04 |