"2. 로그인하기"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
잔글 (→전략) |
|||
(다른 사용자 한 명의 중간 판 2개는 보이지 않습니다) | |||
14번째 줄: | 14번째 줄: | ||
!방법 | !방법 | ||
|- | |- | ||
− | | | + | |준비 |
|작동에 필요한 모듈을 불러오고 변수들을 지정한다. | |작동에 필요한 모듈을 불러오고 변수들을 지정한다. | ||
30번째 줄: | 30번째 줄: | ||
login_url = "http://주소./....php" # 로그인 요청을 보내는 경로를 지정한다. | login_url = "http://주소./....php" # 로그인 요청을 보내는 경로를 지정한다. | ||
+ | </syntaxhighlight> | ||
+ | |- | ||
+ | |로그인요청 | ||
+ | |세션을 시작하고 페이지에 요청을 보낸다. 위 정보들을 토대로 진행한다. | ||
+ | |<syntaxhighlight lang="python"> | ||
+ | session = requests.session() # 세션을 시작한다. | ||
+ | res = session.post(login_url, data=login_info) # 위에서 작성한 내용을 Post 방식으로 요청하고 응답받는다. | ||
+ | res.raise_for_statue() # 오류가 발생하면 에러를 반환하게 한다. | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |- | ||
+ | |세션이용 | ||
+ | |위에서 로그인된 상태를 이용하여 필요한 정보를 얻는다. | ||
+ | |<syntaxhighlight lang="python"> | ||
+ | url = "http://주소" | ||
+ | res = session.get(url) # url로 get 요청을 보낸 후 응답을 받는다. | ||
+ | res.raise_for_status() # 오류가 발생하면 에러를 일으킨다. | ||
+ | |||
+ | soup = BeautifulSoup(res.text, "html.parser") # 필요에 따라 페이지를 분석한다. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
− | = | + | = 한 단계 더 나아가기 = |
− | + | 최근엔 자바스크립트 등으로 로그인을 처리해서 실제 웹브라우저를 사용해야만 로그인되는 경우가 많다. 자바스크립트로 데이터를 가져오는 경우, request모듈 등으로 데이터를 추출할 수 없다. | |
+ | 이처럼 HTML외의 기능으로 정보를 불러오는 경우, 웹브라우저를 이용해야 하는데, 다행히 웹브라우저를 조작하는 방법이 마련되어 있다. | ||
− | + | === 준비물 === | |
− | + | Selenium : 웹 어플리케이션 테스트를 자동화 할 때 사용. 자동으로 URL을 열거나 클릭, 스크롤, 문자입력 등의 행동을 자동화할 수 있다. | |
− | |||
[[분류:웹 스크래핑]] | [[분류:웹 스크래핑]] |
2021년 4월 7일 (수) 19:09 기준 최신판
1 개요[편집 | 원본 편집]
웹사이트를 돌아다닐 때 로그인해야만 접근할 수 있는 페이지가 있다.
2 전략[편집 | 원본 편집]
필요한 기능
- HTTP 요청하기
- 세션 다루기
- 페이지 분석하기
과정 | 설명 | 방법 |
---|---|---|
준비 | 작동에 필요한 모듈을 불러오고 변수들을 지정한다.
|
import requests # 요청 및 세션 다루기.
from bs4 import BeautifulSoup # HTML페이지 분석
login_info = {"id담는변수":"아이디", # 정보를 담는 변수는 사이트마다 다르다.
"password담는변수":"패스워드"
}
login_url = "http://주소./....php" # 로그인 요청을 보내는 경로를 지정한다.
|
로그인요청 | 세션을 시작하고 페이지에 요청을 보낸다. 위 정보들을 토대로 진행한다. | session = requests.session() # 세션을 시작한다.
res = session.post(login_url, data=login_info) # 위에서 작성한 내용을 Post 방식으로 요청하고 응답받는다.
res.raise_for_statue() # 오류가 발생하면 에러를 반환하게 한다.
|
세션이용 | 위에서 로그인된 상태를 이용하여 필요한 정보를 얻는다. | url = "http://주소"
res = session.get(url) # url로 get 요청을 보낸 후 응답을 받는다.
res.raise_for_status() # 오류가 발생하면 에러를 일으킨다.
soup = BeautifulSoup(res.text, "html.parser") # 필요에 따라 페이지를 분석한다.
|
3 한 단계 더 나아가기[편집 | 원본 편집]
최근엔 자바스크립트 등으로 로그인을 처리해서 실제 웹브라우저를 사용해야만 로그인되는 경우가 많다. 자바스크립트로 데이터를 가져오는 경우, request모듈 등으로 데이터를 추출할 수 없다.
이처럼 HTML외의 기능으로 정보를 불러오는 경우, 웹브라우저를 이용해야 하는데, 다행히 웹브라우저를 조작하는 방법이 마련되어 있다.
3.1 준비물[편집 | 원본 편집]
Selenium : 웹 어플리케이션 테스트를 자동화 할 때 사용. 자동으로 URL을 열거나 클릭, 스크롤, 문자입력 등의 행동을 자동화할 수 있다.