goodthings4me.tistory.com
네이버 등 웹 페이지에서 로그인 상태를 유지하기 위한 쿠키를 추출해서 클라이언트(PC)에 저장하는 코딩 연습 내용이다. 이를 응용하면 저장된 쿠키를 header에 추가하여 서버에 전달하고 세션을 유지한 상태로 페이지 스크래핑(크롤링) 등을 할 수 있다.
웹 페이지의 모든 쿠키를 저장해보자
from selenium import webdriver
def all_cookies(url):
chrome_options = webdriver.ChromeOptions()
# chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome('./chrome_driver/chromedriver.exe', options=chrome_options)
driver.get(url)
current_url = driver.current_url
sw = -1
while sw:
question = input('\nID와 PW 입력하고 로그인하셨나? (y/n)>> ')
if question == 'y':
sw = 0
break
else:
print("'y' or 'n' 입력하세요!!")
all_cookies = driver.get_cookies()
print(f'all_cookies: {all_cookies}')
cookies_dict = {}
for cookie in all_cookies:
cookies_dict[cookie['name']] = cookie['value']
string = ''
for key in cookies_dict:
string += f'{key}={cookies_dict[key]};'
print(string)
with open("all_cookies.txt", 'w') as f:
f.write(string)
driver.quit()
return current_url
if __name__ == '__main__':
url = 'https://nid.naver.com/nidlogin.login'
result = all_cookies(url)
print(f'쿠키 추출이 완료되었습니다.\n현재 URL: {result}\n\n')
- 쿠키 파일을 저장할 폴더와 크롬 웹 드라이버 파일이 있는 경로를 수정하고 실행해야 한다.
- 셀레니움(selenium) 크롬 웹 드라이버를 통해 개발자 디버깅 모드로 크롬 브라우저가 열린다.
- id와 password 입력 없이 터미널 창에 출력된 "ID와 PW 입력하고 로그인하셨나? (y/n)>>"에 y를 입력하면 로그인 안된 상태의 쿠키값이 all_cookies.txt 파일로 저장되고,
- id와 password를 입력하고 터미널 창에 출력된 "ID와 PW 입력하고 로그인하셨나? (y/n)>>"에 y를 입력하면 로그인된 상태의 모든 쿠키값이 all_cookies.txt 파일로 저장된다.
- 다음(Daum)이나 기타 웹 사이트의 로그인 주소(URL)을 함수의 파라미터로 입력하고 실행하여 쿠키를 저장할 수 있다.
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 selenium 라이브러리 - find_elements_by_* commands are deprecated. (0) | 2021.12.25 |
---|---|
크롬 웹드라이버 '시스템에 부착된 장치가 작동하지 않습니다.' 메시지 (0) | 2021.12.25 |
파이썬 pytube 오류 메시지 - AttributeError: 'NoneType' object has no attribute 'span' (4) | 2021.12.19 |
[파이썬 크롤링 연습] 쿠팡(Coupang) 상품 리스트 가져오기 (0) | 2021.12.12 |
파이썬 pip 명령 에러 메시지 - ModuleNotFoundError: No module named 'pip' (0) | 2021.12.12 |
댓글