• 목록
  • 아래로
  • 위로

requests python에 대한 이미지 검색결과



본래 예정되었던 파이썬 반복문에 관한 강좌는 아니고, 잠깐 Selenium에 관한 글을 적겠습니다.


구글링해보면 Selenium의 세션을 Requests로 보내는 방법에 대한 웹문서는 많지만, 그 반대 경우에 대해서는 제대로 된 서술을 찾기 어려워서 적어봅니다.


물론 어디까지나 제 허접한 수준에서 우여곡절 끝에 발견한 방법이기 때문에, 보다 간명한 다른 방법이 있을 것 같습니다 ^^



굳이 Requests에서 Selenium으로 세션을 전송할 필요가 있는가 하는 생각도 드시겠지만, 요새 Selenium에서의 로그인을 특별히 신경써서 막아놓은 사이트들을 적지 않게 발견할 수 있습니다.


예컨대 Selenium에서 패스워드를 입력하는 것을 막아놓아서 우회적으로 Pyperclip 등 라이브러리를 이용하여 Ctrl+C, V를 해야 하는 경우가 있습니다.


구체적인 우회방법에 대해서는 제가 이전에 허접한 글을 올렸습니다.


참고 : https://studyforus.com/innisfree/584242


이 경우에 Headless 모드에서 구동시키거나, 우분투에서 실행하는 경우에 Ctrl+C, V가 제대로 작동하지 않을 수 있습니다.


따라서 이러한 문제를 해소하고 모든 환경에서 원활하게 로그인 처리를 하기 위하여 다음과 같은 스크립트를 작성하였습니다.



import requests
from selenium import webdriver

driver = webdriver.Firefox()

def transfer_session():
   LOGIN_INFO = {
       'id': user_id,
       'password': user_pw
   }
   s.get('URL')
   s.post('URL/login_check.php', data=LOGIN_INFO)
   driver.get('URL') # 여기에 이 부분이 들어가지 않으면 에러가 발생합니다.
   for c in s.cookies:
       driver.add_cookie({'name': c.name, 'value': c.value, 'path': c.path, 'expiry': c.expires})
   driver.refresh()
   return



간략히 알고리즘을 설명드리면, 우선 Requests로 로그인을 진행한 후에 Selenium 창을 띄운 상태에서 add_cookie를 하고나서 driver.refresh()를 해주는 방식입니다.


(i) Selenium을 미리 띄워놓지 않은 상태에서 쿠키를 보내고 창을 열려고 하거나, (ii) driver.refresh()를 하지 않는 경우에는 "Document is cookie-averse."라는 에러가 발생할 수 있습니다.


결론적으로 주석을 달아놓은 부분을 쿠키를 넘기기 전에 넣어주는 것이 핵심이라고 하겠습니다.


꼭 .refresh()가 아니더라도 Selenium을 미리 띄워놓아야 한다는 의미에서 드리는 말씀이에요.



스포어의 고수님들께서 더 간단한 방법을 알고 계시다면 조언 부탁드리겠습니다 ^^


그럼 즐거운 주말 되세요!

작성자
이니스프리 100 Lv. (9%) 801480/816080EXP

당분간 개인적인 사정으로 자유게시판에는 글이나 댓글을 작성하지 못합니다.

다른 게시판에는 중립적인 글과 정보글만 작성할 예정입니다.

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
24 [번외편 - 한컴한글] 스마트한 문서 작성을 위한 팁 (작성 중) 이니스프리 이니스프리 20.08.08.13:50 116
23 [Requests-HTML] Requests와 비교할 때의 장점! (네이버 뉴스 등 크롤링) 7 image 이니스프리 이니스프리 20.05.14.19:08 503
22 22. [OpenPyXL] 엑셀 문서 저장하기 / 시트 추가하기 / 셀에 입력하기 14 image 이니스프리 이니스프리 20.02.02.00:46 1224
21 21. [OpenPyXL] 엑셀 문서를 열고 시트에서 셀의 값을 얻기 3 image 이니스프리 이니스프리 20.02.01.23:46 631
20 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 1423
19 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 585
18 [Requests] Selenium을 이용한 Cloudflare의 우회 3 image 이니스프리 이니스프리 20.01.08.19:51 965
17 9. [정리] 파이써닉한 파이썬 문법 팁 for COS Pro image 이니스프리 이니스프리 20.01.04.23:47 476
16 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 1141
15 4. 문자열 처리 (2) - 문자열 조작에 대한 기본함수 및 메서드 1 image 이니스프리 이니스프리 19.12.12.02:27 378
14 6. 리스트와 관련된 기본함수 및 메서드 7 image 이니스프리 이니스프리 19.12.10.21:16 497
13 3. 문자열 처리 (1) - 문자열 접근 및 검색방법 4 image 이니스프리 이니스프리 19.12.09.20:00 983
[Selenium] Requests의 session을 Selenium으로 보내기 image 이니스프리 이니스프리 19.12.07.14:17 1164
11 1. 반복문 (1) - while 문 5 image 이니스프리 이니스프리 19.12.06.20:50 486
10 (序) Python 강좌를 시작하며... 2 image 이니스프리 이니스프리 19.12.05.21:55 348
9 [Pillow] 파이썬 Pillow 라이브러리를 이용하여 이미지의 배경을 transparent하게 만들기 11 image 이니스프리 이니스프리 19.08.04.13:40 1725
8 [번외편 - 법률] 나무위키의 서술 중 법률용어의 사용에 있어 바로잡아야 할 부분 image 이니스프리 이니스프리 19.07.17.22:44 342
7 [번외편 - 유튜브] Youtube API를 이용하거나 또는 이용하지 않고 채널ID를 추출하는 방법 1 image 이니스프리 이니스프리 19.07.16.17:55 810
6 [Selenium] Selenium에서 send_keys를 막아놓은 경우 해결책 이니스프리 이니스프리 19.07.04.05:52 842
5 [번외편 - 아미나] Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨는 경우의 해결책 3 image 이니스프리 이니스프리 18.12.15.23:02 638