[공지] 로그인이 필요한 사이트 크롤링 관련

안녕하세요. 로그인이 필요한 사이트 크롤링과 관련하여 예제로 보여드린 한빛미디어 사이트가 변경되었네요.

아무래도 수강자분들께 보다 도움이 되고자, 제 강의가 실전 사이트 예제를 많이 보여드리려했는데요. 수강자분들께서 많이 늘어나다보니, 사이트 크롤링 연습을 많이 하셔셔, 관련 사이트 운영자분들께서 부담이 되시는 것 같습니다. 

해당 사이트가 크롤링을 강하게 막아놓은 상태라서, 해당 사이트는 부득이 중급 크롤링 강좌(현존 최강 크롤링 기술: Scrapy와 Selenium 정복 ) 에서 설명드린 selenium 기술을 써야 할 것 같습니다. 관련 기술은 별도 프로그램 설치부터 시작해서 내용 자체가 중급에 해당되는 많은 설명이 필요한 부분이라서요. 우선 해당 로그인이 필요한 사이트 강의 내용은 참고로만 부탁드립니다.

다음 코드는 해당 사이트를 selenium을 사용하여 해당 페이지를 브라우저를 조작해서 자동 로그인해서, 크롤링을 하는 코드인데요. 크롬 드라이버를 적절히 설치하셔야 동작하는 프로그램이라서, 실제 코드가 실행이 안되실 꺼예요. 

관련 기술에 대해 그렇다고 글로 해당 강의를 설명드릴 수도 없는 부분이라서 이 부분 양해부탁드립니다.

관련 기술까지 익혀보고 싶으시다면...

현존 최강 크롤링 기술: Scrapy와 Selenium 정복  강의에 대해 쿠폰을 발행해드립니다.

다음 쿠폰번호로 할인받으실 수 있습니다.

229-db7d559a415d

감사합니다.

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

driver = webdriver.Chrome('./chromedriver')

driver.get('https://www.hanbit.co.kr/member/login.html')

my_id = '아이디'

my_pw = '패스워드'

# 다음 세 줄이 기본 패턴 코드: ID 넣기

# WebDriverWait(driver, 최대 기다리는 시간).until(EC.presence_of_element_located((By.CSS_SELECTOR, CSS Selector 태그)))

login_id = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#m_id")))

login_id.clear() # 입력창의 경우, 사전에 작성되어 있는 텍스트를 삭제

login_id.send_keys(my_id) # 내가 넣고자 하는 텍스트 삽입

# 다음 세 줄이 기본 패턴 코드: 패스워드 넣기

login_pw = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#m_passwd")))

login_pw.clear()

login_pw.send_keys(my_pw)

# 버튼 클릭시는 다음 두 줄: 로그인 버튼 누르기

button = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#login_btn")))

button.click()

time.sleep(1) # 로그인 후의 페이지 로딩을 위해, 1초정도 기다리면 좋음

driver.get('https://www.hanbit.co.kr/myhanbit/myhanbit.html')

coin = driver.find_element_by_css_selector('div.sm_mymileage > dl.mileage_section1 dd')

print (coin.text)

driver.quit()

채널톡 아이콘