Main.py [Google Custom Search API 추가]
검색결과를 데이터 형식으로 받아오기 위해 Google Custom Search API를 사용한다. 각각의 CSE ID와 API KEY를 발급 받아야 하는데 발급 방법은 아래와 같다.
CSE ID 발급방법
구글 프로그래밍 검색 엔진 사이트 접속 (아래 링크 참고)
https://programmablesearchengine.google.com/about/
Programmable Search Engine by Google
Help people find what they need on your website. Add a customizable search box to your web pages and show fast, relevant results powered by Google.
programmablesearchengine.google.com
구글 로그인 후 검색엔진 만들기 선택
생성된 엔진의 상세정보로 이동, 검색엔진 ID 확인
API KEY 발급방법
구글 클라우드 플랫폼 접속, 새 프로젝트 만들기
https://console.cloud.google.com/
Google 클라우드 플랫폼
로그인 Google 클라우드 플랫폼으로 이동
accounts.google.com
API 라이브러리로 이동, 검색창에 Google Search API를 검색하여 api 추가
사용자 인증정보의 API key에 접속하여 API KEY 번호 확인
받아온 CSE ID와 API KEY를 이용해 쿼리에 대한 검색을 수행하고 처리하는 함수 작성.
그리고 해당 API는 검색요청이 일일 100건 이상일 시 1000건마다 5달러의 가격이 청구되기 때문에 한도를 100건 요청으로 제한하는 구문을 추가했다.
구문을 추가하면서 데이터를 관리하는 파일을 main.py 에서 독립시켜 data_manager.py 파일로 모듈화 시켰다
def search_google(self, query, url, pattern):
if not self.data_manager.can_make_request(): # data_manager 모듈
messagebox.showwarning("Warning", "Daily request limit reached. Try again tomorrow.")
return
api_key = 'my_api_key' # API 키 입력
cse_id = 'my_cse_id' # CSE ID 입력
search_url = f"https://www.googleapis.com/customsearch/v1?q={query}&key={api_key}&cx={cse_id}"
# 요청 URL 생성
response = requests.get(search_url) # API에 GET 요청을 보냄
if response.status_code == 200: # 요청이 성공한 경우
self.data_manager.increment_request_count() # 일일 요청횟수 COUNT 증가
results = response.json().get('items', [])
self.display_results(results, url, pattern) # display_results 함수를 호출하여 결과 표시
else:
print(response.text) # 응답 내용 디버깅 출력
messagebox.showwarning("Warning", "Failed to retrieve search results.")
data_manager.py [요청한도 설정]
REQUEST_LIMIT = 100 # 하루 무료 요청 한도
REQUEST_COUNT_FILE = "request_count.json" # 요청 횟수를 저장하는 파일
DATA_FILE = "site_data.json" # 사이트 데이터를 저장하는 파일
'프로젝트 > 구글개인정보노출점검 프로그램' 카테고리의 다른 글
파이썬을 활용한 구글 개인정보노출점검 프로그램 제작(3) (1) | 2024.06.03 |
---|---|
파이썬을 활용한 구글 개인정보노출점검 프로그램 제작(1) (2) | 2024.06.03 |