python을 기본 언어로 하여 크롤링한 정보를 google spreadsheet에 연동을 해보는 프로젝트 이며, 해당 포스팅에서는 크롤링의 데이터를 구글 스프레드 시트에 저장보는 과정을 적었다.
GPT가 알려준다고해도 오래된 정보나 잘못된 정보를 알려줄 수 있기 때문에 중간중간 내가 따로 검색해서 해결하는 것이 좋다.

2. Spreadsheet에 데이터 저장하기

이번에도 하고 싶은 것을 GPT한테 말해준다. 아무렇게나 말해도 되지만 되도록이면 상세한게 원하는 답을 얻을 수 있다. image

첫 번째 포스팅에서 크롤링 과정에 대해 설명을 이미 해서 google spread sheet 연동하는 과정만 적었다.

  1. google auth 설정
  2. 구글 스프레드시트 공유
  3. 인증 및 스프레드시트 연결

google auth 설정

1. Google Cloud Console 프로젝트 생성
Google Cloud Console에서 새로운 프로젝트를 생성한다. 이름은 원하는 것으로 한다. image

2. API 활성화

  • API 서비스 -> API 라이브러리로 가서 ‘google sheets API’를 검색
    ‘사용’ 버튼 눌러서 활성화
  • API 서비스 -> API 라이브러리로 가서 ‘google drive API’를 검색
    ‘사용’ 버튼 눌러서 활성화

3. auth 정보 받기

  1. ‘OAuth 동의 화면’ 만들기
    • ‘OAuth 동의 화면’으로 이동하여 email, 앱 이름, 테스트 사용자 추가 유무 등 필요한 내용 입력
  2. ‘사용자 인증 정보’ 받기
    1. ‘사용자 인증 정보’로 이동
    2. ’+ 사용자 인증 정보 만들기’에서 ‘OAuth 클라이언트 ID’를 선택
    3. 어플리케이션 유형을 데스크톱 앱 으로 설정하고 이름 입력
    4. 만들기 클릭
  3. ‘서비스 계정’ 만들기
    1. ‘사용자 인증 정보’ 화면에서 ‘사용자 계정 관리’로 이동
    2. ’+ 사용자 계정 만들기’에서 ‘OAuth 클라이언트 ID’를 선택
    3. 계정 아이디, 서비스 계정 역할 등을 입력하여 계정 생성
  4. ‘키’ 만들기
    1. 계정 확인 후 오른쪽 ⋮버튼 클릭하여 ‘키 관리’로 이동
    2. ‘키 추가’ -> ‘새 키 만들기’ -> ‘JSON’ 선택하여 만들기

구글 스프레드시트 공유

  1. 새로운 스프레드 시트 생성 및 제목 지정
  2. 공유하기 버튼 클릭
  3. auth 정보 받기에서 받은 JSON에 들어있는 이메일 추가

데이터 저장하기

  • 코드 초안 작성
    아래 코드를 크롤러 아래에 추가해준다.
    def save_to_google_sheet(data):
      # Google Sheets API 인증
      scope = ["https://spreadsheets.google.com/feeds", "https://www.googleapis.com/auth/spreadsheets",
              "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
      creds = ServiceAccountCredentials.from_json_keyfile_name('key/crawler-400005-20fb77bb43cb.json', scope)
      client = gspread.authorize(creds)
    
      # 스프레드시트 및 워크시트 연결
      sheet = client.open('ohou_crawling').sheet1
    
      for item in data:
        sheet.append_row([item[0], item[1]])
    
    • 결과 화면
      image
      근데 뭔가 이상하다
      • 이미지가 안들어온다
      • 콘텐츠만 보면 되는데 콘텐츠를 작성한 사람의 피드를 가서 또 제목과 이미지를 가져오려고 한다..

에러 로그

  • gspread.exceptions.APIError: {‘code’: 403, ‘message’: ‘Google Drive API has not been used in project 987016676141 before or it is disabled.
    GPT가 나한테 알려준 방식에서 Google Drive API도 활성화 시켜야 한다. GPT는 이런 중요한 부분 빼먹고 내가 다시 물어보면 아무렇지 않다는 듯이 물어보는 것에 답해준다. 이런 부분이 좀 답답하다.