안경잡이개발자

728x90
반응형

웹 크롤러(Web Crawler)로 자동 로그인 및 주요 정보 추출하기

나동빈


  이번 시간에는 실제 웹 사이트를 대상으로 가장 많이 사용되는 기술 중 하나인 자동 로그인(Auto Login) 및 주요 정보 추출 방법에 대해 소개하고자 합니다. 이번 시간에도 제 개인 웹 사이트를 실습 대상으로 설정하겠습니다.


  웹 사이트 URL: http://dowellcomputer.com/member/memberLoginForm.jsp



  웹 사이트에 접속하면 위와 같이 로그인 화면이 등장합니다.



  바로 '페이지 소스 보기'를 통해 어떠한 서버 URL로 파라미터(Parameter)를 전송하는지 확인합니다.



  일단 직접 수동으로 로그인을 수행해보시면 메인(Main) 페이지로 로그인이 된 상태로 이동하는 것을 알 수 있습니다. 따라서 다음과 같이 두 개의 파라미터를 전달하여 로그인 하는 프로그램을 작성해 봅시다.


from bs4 import BeautifulSoup as bs

import requests


MEMBER_DATA = {

    'memberID': 'a',

    'memberPassword': 'a'

}


# 하나의 세션(Session) 객체를 생성해 일시적으로 유지합니다.

with requests.Session() as s:

    # 로그인 페이지로의 POST 요청(Request) 객체를 생성합니다.

    request = s.post('http://dowellcomputer.com/member/memberLoginAction.jsp', data=MEMBER_DATA)

    

print(request.text)



  위 실행 결과를 보면 성공적으로 로그인 되어 메인 페이지로 리다이렉션(Redirection) 시키는 소스코드가 있는 것을 알 수 있습니다.



  로그인 이후에는 위와 같이 '회원 정보 수정' 링크로 들어간 이후에 자신의 이메일 정보를 확인할 수 있는 것을 알 수 있습니다.


request = s.get('http://dowellcomputer.com/member/memberUpdateForm.jsp?ID=a')

soup = bs(request.text, 'html.parser')


result = soup.findAll('input',{"name": "memberEmail"})

print(result[0].get('value'))


  결과적으로 <input> 태그 중에서 'memberEmail'이라는 이름 속성을 가지는 결과를 찾아서 출력해주었습니다.



  실행 결과를 보면 성공적으로 이메일 값이 추출된 것을 알 수 있습니다.

728x90
반응형