ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 로그인하여 데이터 크롤링하기
    Python 2020. 6. 8. 17:18

    로그인하여 데이터 크롤링하기

    • 특정한 경우, 로그인을 해서 크롤링을 해야만 하는 경우가 존재

    • 예) 쇼핑몰에서 주문한 아이템 목록, 마일리지 조회 등

    • 이 경우, 로그인을 자동화 하고 로그인에 사용한 세션을 유지하여 크롤링을 진행

    HTTP 상태 코드

    • 1xx (정보): 요청을 받았으며 프로세스를 계속한다

    • 2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다

    • 3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다

    • 4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다

    • 5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다

    로그인 후 데이터 크롤링 하기

    1. endpoint 찾기 (개발자 도구의 network를 활용)

    2. id와 password가 전달되는 form data찾기

    3. session 객체 생성하여 login 진행

    4. 이후 session 객체로 원하는 페이지로 이동하여 크롤링

    import requests
    from bs4 import BeautifulSoup

    endpoint 찾기

    url = 'https://www.kangcom.com/member/member_check.asp'

    post data 구성

    data = {
        'id':'아이디',
        'pwd':'비밀번호'
    }

    Session 생성

    s = requests.Session()
    response = s.post(url, data=data)
    response.status_code
    500
    soup = BeautifulSoup(response.text)

    mypage의 마일리지 점수 가져오기

    mypage = 'https://www.kangcom.com/mypage/'
    resp = s.get(mypage)
    soup = BeautifulSoup(resp.text)
    td = soup.select_one('td.a_bbslist55:nth-child(3)') # 3번째 a_bbslist55 선택
    mileage = td.text.split('원')[0]
    mileage
    '0'

    한빛출판사 로그인 후 마일리지 가져오기

    url = 'https://www.hanbit.co.kr/member/login_proc.php'
    data = {
        'm_id':'아이디',
        'm_passwd':'비밀번호'
    }

    Session 생성

    s = requests.Session()

    post로 보내기

    resp = s.post(url, data=data)
    #resp.status_code
    resp.text
    "<script>location.href='https://www.hanbit.co.kr';</script>"
    mypage = 'https://www.hanbit.co.kr/myhanbit/myhanbit.html'
    resp = s.get(mypage)
    soup = BeautifulSoup(resp.text)
    #soup

    마일리지 가져오기

    mileage = soup.select_one('dl.mileage_section1 span')
    mileage.text
    '3,000'

    한빛이코인 가져오기

    mileage = soup.select_one('dl.mileage_section2 span')
    mileage.text
    '0'

    'Python' 카테고리의 다른 글

    Selenium  (0) 2020.06.08
    Webcrawling - XML  (0) 2020.06.08
    Web-Crawling (다음 뉴스)  (0) 2020.06.08
    Web-Crawling (네이버 영화)  (0) 2020.06.05
    Web-Crawling (네이버 북)  (0) 2020.06.04
Designed by Tistory.