[AIVLE SCHOOL] 데이터 수집 (3) - 크롤링2

춤추는 머쉬룸·2024년 10월 4일

AIVLE SCHOOL 6기

목록 보기
37/80
post-thumbnail

10/4 1세션

A. requests 요청 막아놓은 페이지에서의 크롤링

다음의 경우, 환율 정보를 가져올 때 403 Forbidden 에러 발생시킴


B. header

  • header 에는 소스에 대한 정보를 담는다
  • cookie, referer, user-agent 등의 정보를 담는다
  • referer :
  • user-agent : 브라우저, OS 정보를 포함
  • WAS 에서 보통 user-agent 를 확인해서 정상적인 사용자인지 판단하도록 만들어 놓는다.

TIP! 파이썬으로 요청 시 user-agent 에 파이썬이 찍힌다!

  • header는 클라이언트에서 만드는 정보이므로, 파이썬에서 request header 정보를 수정할 수 있다
# 데이터 요청 시 헤더 추가

> headers = {'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36',
          'referer' : 'https://finance.daum.net/exchanges'}
          
> response = requests.get(url, headers=headers)

TIP! 다음 finance 페이지는 user-agent, referer 를 넣을 때 데이터를 전달해준다


C. 네이버 Open API 사용

  1. 네이버 개발자 센터에서 키를 발급
  2. Document 를 읽어보며 요청 URL 과 파라미터 등을 이해
  3. 해당 형식에 맞게 headers 와 파라미터 설정
import requests
import json

params = {
    'startDate': '2018-01-01',
    'endDate': '2024-01-01',
    'timeUnit': 'month',
    'keywordGroups': [
        {'groupName': '트위터', 'keywords': ['트위터', '트윗']},
        {'groupName': '페이스북', 'keywords': ['페이스북', '페북']},
        {'groupName': '인스타그램', 'keywords': ['인스타그램', '인스타']},
    ]
}

headers = {
    'Content-Type': 'application/json',
    'X-Naver-Client-Id': CI,
    'X-Naver-Client-Secret': CD,    
}

response = requests.post(url, data=json.dumps(params), headers=headers)
  • json.dumps() : params 에 한글이 있다. 파라미터에 한글이 인코딩되어 넣을 수 있도록 함.

0개의 댓글