일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- BigQuery
- airflow subdag
- flask
- subdag
- requests
- API Gateway
- Airflow
- top_k
- session 유지
- grad-cam
- spark udf
- chatGPT
- tensorflow text
- correlation
- 유튜브 API
- login crawling
- 상관관계
- youtube data
- API
- 공분산
- TensorFlow
- GCP
- hadoop
- gather_nd
- UDF
- Retry
- XAI
- GenericGBQException
- integrated gradient
- Counterfactual Explanations
- Today
- Total
데이터과학 삼학년
[크롤링] 로그인이 필요한 웹사이트 크롤링 방법(feat. requests) 본문
로그인이 필요한 웹사이트를 크롤링하려면, 먼저 로그인이 되어 있는 세션을 유지해야 함!!
파이썬 requests를 이용한 로그인 후 크롤링 방법
1. requests 모듈 설치
크롤링을 하기 위해서는 requests 모듈을 사용
pip install requests
2. 로그인 정보 확인
웹 사이트에 로그인하기 위해서는 로그인 정보를 확인해야 함
로그인 정보는 일반적으로 사용자 이름과 비밀번호임
3. 세션 유지
세션을 유지하기 위해 requests 모듈의 Session 클래스를 사용
Session 클래스는 HTTP 요청을 유지하면서 쿠키와 같은 데이터를 저장할 수 있음
4. 로그인 요청
세션을 만든 후, 로그인을 요청합니다. 로그인 요청은 POST 요청으로 이루어짐
사용자 이름과 비밀번호를 포함한 데이터를 요청에 첨부하고, 로그인을 처리하는 URL을 사용
5. 로그인 정보 유지
로그인을 완료하면 세션에 쿠키 정보가 저장
이 정보를 사용하여 다음 요청부터 로그인 상태를 유지할 수 있음
6. 크롤링
로그인 정보를 유지한 상태에서 크롤링을 수행
requests 모듈을 사용하여 GET 요청을 보내고, 크롤링하고자 하는 웹페이지의 HTML을 얻어옴
파이썬 코드 예시
import requests
# 로그인 정보
LOGIN_URL = '<https://example.com/login>'
USERNAME = 'username'
PASSWORD = 'password'
# 세션 유지
session = requests.Session()
# 로그인 요청
login_data = {
'username': USERNAME,
'password': PASSWORD
}
response = session.post(LOGIN_URL, data=login_data)
# 로그인 정보 유지
if response.status_code == 200:
print('로그인 성공')
else:
print('로그인 실패')
# 크롤링
CRAWLING_URL = '<https://example.com/crawling>'
response = session.get(CRAWLING_URL)
# HTML 출력
print(response.content)
위의 코드에서 LOGIN_URL은 로그인을 처리하는 URL이고,
USERNAME과 PASSWORD는 로그인에 사용될 사용자 이름과 비밀번호
크롤링하고자 하는 페이지의 URL은 CRAWLING_URL에 설정
세션은 requests.Session()으로 생성되며, 로그인 정보를 포함한 POST 요청은 session.post()를 사용하여 보내고,
크롤링하고자 하는 페이지의 GET 요청은 session.get()으로 보냄
'Natural Language Processing' 카테고리의 다른 글
[Transformers] 파이토치 가중치만 있는 모델을 TF로 사용?! (0) | 2023.09.11 |
---|---|
language Model [uncased vs cased] (0) | 2023.09.09 |
PMI(Pointwise Mutual Information); 점별 상호 정보량 (0) | 2022.11.27 |
[크롤링] selenium implicitly Wait VS Explicitly Wait (0) | 2022.05.31 |
[크롤링] What is the differences between requests and selenium? (0) | 2022.05.27 |