[Scraping] Selenium으로 로그인이 필요한 싸이트 정보 가져오기
Machine Learning 2019. 1. 1. 16:02 |반응형
Selenium과 Chrome driver를 이용해 웹싸이트에서 로그인이 필요한 정보를 가져 올 수 있다.
아래 코드는 인터넷 서점(Yes24)에 접속해서 로그인 하고 주문 내역을 가져 온다.
Chrome이 동작하는걸 보고 싶다면 options 관련 부분만 삭제하면 된다.
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
32
33
34
35
36
37
38
39
40
|
from selenium import webdriver
login_url = "https://www.yes24.com/Templates/FTLogin.aspx"
id = "아이디"
password = "패스워드"
options = webdriver.ChromeOptions()
options.add_argument("headless") # headless 모드
options.add_argument("window-size=1920x1080") # headless 모드가 아니면 의미가 없는거 같다.
options.add_argument("--log-level=3") # 이 코드가 없으면 headless 모드시 log가 많이 표시 된다.
#driver = webdriver.Chrome("c:\download\chromedriver.exe", options = options)
driver = webdriver.Chrome(options = options) # webdriver와 소스가 같은 폴더에 있을 때.
driver.implicitly_wait(3)
driver.get(login_url)
print("Title: %s\nLogin URL: %s" %(driver.title, driver.current_url))
id_elem = driver.find_element_by_id("SMemberID")
id_elem.clear()
id_elem.send_keys(id)
driver.find_element_by_id("SMemberPassword").clear()
driver.find_element_by_id("SMemberPassword").send_keys(password)
# clear()와 send_keys()는 None을 리턴 한다.
login_btn = driver.find_element_by_xpath('//*[@id="btnLogin"]')
login_btn.click() # None 리턴
# driver.find_element_by_xpath('//*[@id="btnLogin"]').click()
list_url = "https://ssl.yes24.com//MyPageOrderList/MyPageOrderList"
driver.get(list_url)
print("-" * 30, "Order list", "-" * 30)
lists = driver.find_elements_by_css_selector("#MyOrderListTbl span")
for i, item in enumerate(lists):
print("%d: %s" %(i + 1, item.text))
driver.save_screenshot("screenshot.png")
#driver.quit()
|
cs |
38번 라인에서 캡쳐한 'screenshot.png'
반응형
'Machine Learning' 카테고리의 다른 글
OCR with Tesseract on Windows - Windows에서 테서랙트 사용하기 (0) | 2020.10.07 |
---|---|
CSV 분석 (0) | 2019.01.20 |
JSON 분석 (0) | 2019.01.18 |
Beautifulsoup XML 분석 (0) | 2019.01.15 |
[Scraping] Naver '이 시각 주요 뉴스' 목록 가져 오기 (0) | 2018.12.30 |