728x90
반응형
해당 코드는 3일 전의 구글 검색 결과 페이지에서 검색어를 추출하여 상위 5개 검색어를 출력하는 파이썬 프로그램입니다. 이를 위해 datetime 모듈로 날짜 계산, requests 모듈로 HTTP 요청, Beautiful Soup 4 라이브러리로 HTML 소스 코드 분석, 상위 5개 검색어를 출력합니다.
1. 기획
아래의 기획을 거쳐서 첫번째 단계의 프로그램을 구성하였다.
2. 프로그램 파이썬 환경구성
먼저 본인의 IDLE에 beautifulsoup4를 설치한다.
pip install beautifulsoup4
3. 프로그램 작성
파이썬 프로그램을 작성한다.
import requests
from bs4 import BeautifulSoup
from datetime import datetime, timedelta
# 3일 전의 날짜 계산
now = datetime.now()
days_ago = (now - timedelta(days=3)).strftime('%Y-%m-%d')
# Google 검색 결과 페이지 URL
url = f'https://www.google.com/search?q=&tbs=qdr:d&source=lnt&sa=X&ved=0ahUKEwirpM6f77z6AhXUyYsBHa1hC5QQpwUIFA&biw=1366&bih=657&dpr=1'
# HTTP 요청 보내기
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
# 검색어 추출하기
keywords = []
for link in soup.find_all('a'):
url = link.get('href')
if url.startswith('/url?q='):
keyword = url.split('/url?q=')[1].split('&')[0]
if keyword.startswith('http') or keyword.startswith('www'):
continue
else:
keywords.append(keyword)
# 상위 5개 검색어 출력하기
top_keywords = sorted(keywords, key=keywords.count, reverse=True)[:5]
print(top_keywords)
3. 자가 평가 및 개선사항
(1) 위 url로 가면 그냥 구글 검색 창만 떠있다. 아무 일도 일어나지 않음
--> Google API 접속을 직접 해서 받아올 수 있도록 해야겠다.
(2) 코드 수정
import requests
# Google Custom Search API 요청 URL
url = "https://www.googleapis.com/customsearch/v1"
# API 키, 검색 엔진 ID, 검색어 설정
params = {
"key": "YOUR_API_KEY",
"cx": "YOUR_SEARCH_ENGINE_ID",
"q": "",
"sort": "",
"dateRestrict": "d3", # 최근 3일 검색 결과
}
# API 요청 보내기
res = requests.get(url, params=params)
data = res.json()
# 검색어 추출하기
keywords = [item["title"] for item in data.get("items", [])]
# 상위 5개 검색어 출력하기
top_keywords = sorted(keywords, key=keywords.count, reverse=True)[:5]
print(top_keywords)
728x90
반응형
'Programming' 카테고리의 다른 글
NFT를 활용한 다양한 수익화 방법 - 디지털 아트, 게임, 브랜딩, 음악, 부동산 (6) | 2023.02.22 |
---|---|
[프로그램 기획] 구글에서 3일 안에 가장 많이 검색된 주제를 찾는 Python programe 만들기 <기획-제작 과정> (8) | 2023.02.16 |
DALL-E: AI가 만들어낸 창의적인 이미지 생성 기술 (5) | 2023.02.16 |
ChatGPT 활용 사례: 5가지 예시 (14) | 2023.02.15 |
[chatGPT] AI 대화 / 자동 코딩 _ 챗GPT (24) | 2023.01.28 |