[Software] Python으로 Google 검색결과 크롤링(crawling)하기
Google API의 일종인 Custom Search Engine(CSE)을 이용해 구글 검색 결과를 크롤링해보자. 순서는 아래와 같다.
1. Google Custom Search Engine(CSE) 만들기
아래 사이트에서 자신에게 맞는 검색 엔진을 만들자.
https://cse.google.com/cse/create/new
아래 그림에서 검색할 사이트를 추가하면 원하는 사이트에 대해 검색을 할 수 있게 해준다.
현재는 stackoverflow.com으로 설정했다.
2. 검색 엔진 ID 추출
CSE 추가 후 아래에서 검색 엔진 ID를 복사해 놓는다. 아래 그림 참조.
https://cse.google.com/cse/all
3. Custom Search API 사용 설정하기
API 대쉬보드에서 라이브러리로 이동해 custom search API를 검색 해 사용 설정을 한다.
4. API Key 생성하기
아래 사이트에서 GET A KEY 링크 눌러, 프로젝트 생성 또는 기존 프로젝트 선택해서 키 생성한다. 그리고 이 key를 복사해 둔다.
https://developers.google.com/custom-search/v1/overview
5. python으로 검색 결과 크롤링
위의 단계를 완료하면 이제 크롤링 준비는 끝났다. 아래와 같은 코드로 python으로 구글 검색을 수행하고 그 결과 중에서 링크를 추출할 수 있다. 현재 API로는 10개의 링크만 추출 가능하다.
* 크롤링 예제(https://linuxhint.com/google_search_api_python/ 참조)
from googleapiclient.discovery import build
import json
my_api_key = "api key"
my_cse_id = "custom search engine id"
def google_search(search_term, api_key, cse_id, **kwargs):
service = build("customsearch", "v1", developerKey=api_key)
res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute()
return res
//구글로 검색하기
search_result = google_search("Python Google Custom Search", my_api_key, my_cse_id)
//전체 크롤링 결과 파일로 쓰기
with open('search_result_all.json', 'w', encoding='utf-8') as f:
json.dump(search_result, f, ensure_ascii=False, indent=4)
items=search_result['items']
//query 결과에서 link만 추출해서 print 하기
for i in items:
print(str(i['link']))
전체 크롤링 결과는 아래와 같다.
전체 결과에서 query 결과는 items에 저장되고 여기에서 link 정보만 추출하면 다음과 같다.
위 API는 무료일 경우 하루 100회 사용 가능하다.
아래와 같이 현재 자신의 API 사용량을 체크할 수 있다. 현재 10회 사용한 것으로 나온다.
작성자가 댓글을 삭제했습니다.
답글삭제