Python
로그인하여 데이터 크롤링하기
긔
2020. 6. 8. 17:18
로그인하여 데이터 크롤링하기
-
특정한 경우, 로그인을 해서 크롤링을 해야만 하는 경우가 존재
-
예) 쇼핑몰에서 주문한 아이템 목록, 마일리지 조회 등
-
이 경우, 로그인을 자동화 하고 로그인에 사용한 세션을 유지하여 크롤링을 진행
HTTP 상태 코드
-
1xx (정보): 요청을 받았으며 프로세스를 계속한다
-
2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
-
3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
-
4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
-
5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
로그인 후 데이터 크롤링 하기
-
endpoint 찾기 (개발자 도구의 network를 활용)
-
id와 password가 전달되는 form data찾기
-
session 객체 생성하여 login 진행
-
이후 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'