-
[Python] requests Login (requests Session)개발/Crawler & Scraper 2022. 3. 2. 02:46728x90
[Python] requests Login (requests Session)
보통 로그인을하려면 Selenium을 사용하지만
post요청만으로도 로그인이가능합니다.
작동이아닌 데이터 수집의 목적이라면 이게 더 좋겠죠
Form Tag와 input Tag확인해보기
제가 심심할때마다 하는 제휴마케팅 플랫폼 텐핑 로그인을해보겠습니다.
국민부업 1인 셀러, 텐핑
모바일 소문 서비스 텐핑입니다. 유익한 콘텐츠를 소문내고 유효한 소문을 낸 만큼 현금캐시를 쌓으세요.
tenping.kr
먼저 form태그를 보시면 metohd가 post인거 말곤(당연한거지만) 다른정보가 없죠 상관없습니다.
input태그도 봤지만 name 속성이없네요 로그인을 구현해보신분이면 name으로 식별하는걸 아실겁니다.
별 다른 정보가 없으니 js파일을 열어보겠습니다.
MemberID와 Password의 value를 MemberID변수에 할당하고있죠 좀 더 내려보겠습니다.
ajax로 post요청하는부분이있었습니다.
보시면 url은 Member/ActionLogin이고
data에 json으로 ID와 password를 전달해주고있죠
그럼 이제 끝났습니다. 그냥 Member/ActionLogin에 data를
{
MemberID : 내 아이디,
Password : 내 패스워드
}
이렇게 넘겨주면됩니다.
코드짜보기
import requests from bs4 import BeautifulSoup as bs import data as info data = { 'MemberID' : info.ID, #제 아이디 'Password' : info.PWD #제 비밀번호 } s = requests.session() req = s.post("https://tenping.kr/Member/ActionLogin",data=data) print(req.status_code) #200
제대로 되었는지 프로필에 이름을 가져와보겠습니다.
초보입니다 << 이걸 가져와보겠습니다.
id가 Main_NickName이죠
간단하게 bs4로 가져와보겠습니다.
import requests from bs4 import BeautifulSoup as bs import data as info data = { 'MemberID' : info.ID, #제 아이디 'Password' : info.PWD #제 비밀번호 } s = requests.session() s.post("https://tenping.kr/Member/ActionLogin",data=data) #로그인 text = s.get("https://tenping.kr/").text soup = bs(text,"html.parser") name = soup.find(id="Main_NickName").text print(name)
실제로 웹페이지에서 로그인을 구현해보셨으면 되게 친근하게 느껴졌을거같습니다.
크롤링할때도 데이터수집만할거면 selenium보단 requests로 빠르게하는게 좋기도해서 익혀두면 좋은거같습니다
728x90