2023.07.04 - [강의자료/텍스트기반SW] - 파이썬으로 웹 크롤링 하고 바드에게 묻고 답하기
지난 시간에 저희 홈페이지 글을 크롤링 해서 내용을 찾아 바드에게 묻고 답하는 실습을 진행 해 보았는데요~
그렇다면 티스토리블로그 요약하는 프로그램이라면 URL 을 입력 받아 분석하는 프로그램을 만들면 되겠네요~
입력을 받아서 만약 exit 가 들어 왔다면 프로그램 종료하고 그렇지 않으면 분석 하도록 프로그램을 수정해 보도록 하겠습니다.
while True:
url_addr = input("분석할 URL 을 입력하세요.(종료시 exit) : ")
if url_addr == 'exit': break
# 웹 페이지를 가져온 뒤 BeautifulSoup 객체로 만듦
response = requests.get(url_addr)
soup = BeautifulSoup(response.content, 'html.parser')
contents = soup.find('div', {'class': 'contents_style'})
data=[]
for ptag in contents.find_all('p'): #모든 p 태그를 찾아서 리스트로 만듬
data.append(ptag.text)
print(' '.join(data))
#exit(0)
questionText = '다음의 글을 읽고 한 줄로 정리해줘 '
questionText += ' '.join(data)
#바드 대답 듣기
response = bardapi.core.Bard().get_answer(questionText)
#print(response['content'],'\n')
for i,choice in enumerate(response['choices']):
print(f"Choice {i+1} : ", choice['content'][0],'\n\n')
테스트를 해 보면 제대로 분석을 하는 것을 알 수 있네요.^^
지난 시간에 만든 프로그램을 실행 파일로 만들어 볼께요~
일단 bard API Key를 파일에 저장해 놓고 사용하는 방식으로 프로그램을 구현해 보도록 하겠습니다.
파일은 Json 파일로 만들어서 읽고 쓰는 방식을 선택하겠습니다.
1. Python에서 JSON 파일 생성
- json,os.path 모듈 임포트
import json
import os.path
- 파일 존재 유무 확인 : 만약 파일이 없다면 API key를 입력받는 화면으로 이동하여 파일을 생성한다.
if not os.path.isfile('config.json'):
print('FileNotFoundError')
exit(0)
일단 처음 프로그램을 실행하면 당연히 config.json 파일이 없어서 FileNotFoundError 메시지가 출력됩니다.
파일이 없다면 파일에 필요한 키값을 입력 받아서 생성하는 함수를 만들어서 파일을 생성 한 다음 JSON 파일을 읽어 오도록 하겠습니다.
def make_config_file():
bard_config = dict()
bard_config['key']=input('bard API 키를 입력하세요 : ').split()
#json 파일로 저장
with open('config.json', 'w', encoding='utf-8') as make_file:
json.dump(bard_config, make_file, indent="\t")
make_config_file 함수는 키값을 입력 받아서 bard_config 라는 딕셔너리를 생성한 다음 이 딕셔너리를 json 파일로 생성하였습니다.
메인에서 파일이 없다면 위의 함수를 호출하여 파일을 생성후 파일을 읽어 보겠습니다.
2. Python에서 JSON 파일 읽기
json_data = ''
if not os.path.isfile('config.json'):
make_config_file()
with open('config.json', 'r') as f:
json_data = json.load(f)
print(json.dumps(json_data))
키를 입력 받은 후 키값을 출력해 보면 위와 같이 key값에 입력 받은 key 값이 조회 됩니다.
다시 실행 해 보면 키값을 입력 받는 메시지가 출력 되지 않습니다.
만약 key 값을 변경해야 한다면 config.json 파일을 삭제하면 다시 입력을 받는 메시지가 출력 되겠네요.
그렇다면 bard_api_key 에 파일에서 읽어온 이 키 값을 적용시켜 주면 될것 같습니다.
print(json_data['key'])
json 파일을 읽어 오면 json_data 는 딕셔너리 형태이므로 여기서 'key' 에 해당하는 값을 출력해 보면 키값만 출력 되는 것을 확인 할 수 있습니다.
bard_api_key = json_data['key'][0]
따라서 위와 같이 bard_api_key 에 json_data['key'] [0] 값을 적용시켜 주면 됩니다.(여기서 [0]을 선택한 이유는 key 에 해당하는 값이 리스트 형태로 저장되기 때문이다.)
이렇게 해서 실행을 해 보면 이전에 만들었던 프로그램이 정상으로 수행 되는 것을 확인할 수 있습니다.
3. 실행파일 만들기
마지막으로 이렇게 만든 프로그램을 어디서나 실행 할 수 있도록 샐행 파일로 만들어 보겠습니다.
1. PyInstaller 설치
pip install pyinstaller
2. 실행파일 만들기
파이썬 소스코드가 있는 디렉토리로 이동 후 다음과 같이 생성
pyinstaller -w -F main.py
3. 실행파일 생성위치
소스코드가 있는 폴더 -> dist -> main 폴더를 확인해 보면 main.exe 가 생겨 있는 것을 확인할 수 있다.
main.exe 를 실행해 보면 다음과 같이 실행 되는 것을 확인할 수 있습니다.
'강의자료 > 텍스트기반SW' 카테고리의 다른 글
[파이썬] 파이게임 객체 생성 (13) | 2023.07.27 |
---|---|
[파이썬] 파이게임 사용법 (18) | 2023.07.21 |
파이썬으로 웹 크롤링 하고 바드에게 묻고 답하기 (2) | 2023.07.05 |
구글 바드 API 파이썬에서 사용하기 (18) | 2023.06.28 |
별찍기 원리에 대해 알아 봅니다. (9) | 2018.10.10 |