파이썬으로 내가 원하는 앱을 만들기 위해 앞서 HTML과 CSS, Javascript의 기초를 짧게 공부했다. 그리고나서 파이썬을 보았는데 워낙 기초가 없고 지식이 없어서인지 코드 한줄 만드는데도 오랜 시간이 걸린다.
목표는 빠른 시일내 앱 하나를 만들어보는 것이기에 깊고 심도 있게 공부하는 것 보다는 직접 프로그램을 짜보고 수정/보완해 나가는 방식이 좋을 것 같다. 그래서 내가 원하는 프로그램을 구상하고 기존에 있는 웹/앱 서비스를 뜯어보면서 공부해 나가고 있다.
이번에 시도해보고 있는 건 내가 원하는 웹의 내용을 BeautifulSoup을 이용해 스크래핑 해오고 그 함수의 결과값을 홈페이지나 카톡으로 받아 보고자 한다.
코드를 짜던 중 막혔던 부분이 함수 결과값을 text 파일로 저장하기 였는데 이를 sys.stdout을 이용해 풀어냈다.
ㅣ내장함수 sys.stdout 이용
내가 원하는 정보를 함수로 만들었다. 그 함수의 결과를 카톡이나 홈페이지에 정해진 시간 받아보고 싶었다. 먼저 print()함수를 이용해 출력한 결과값을 파일로 저장하거나 내보내기를 시도해 보았지만 실패했다. (지나가다 이 글을 보고 아는 분이 있다면 지식 나눔 부탁드립니다.) print() 명령도 열쇠글을 바꾸면 파일로 저장 할 수 있는것 같지만 찾지 못 해 다른 시도를 해보았다. 검색을 통해 내장함수 sys.stdout을 찾았고 적용해 본 결과 text 파일로 저장할 수 있었다.
ㅣ코드 짜기
가장 먼저 상단에 import로 sys 불러오기를 해준다. 그리고 sys.stdout = open('mydaily_report.txt ','a', encoding="utf8") 한줄 넣어주면 print()로 출력되는 함수 결과 값을 text 파일 형식으로 저장할 수 있다. 주황색으로 표시해둔 부분은 내용을 추가한다는 것으로 기존의 내용은 그대로 두고 아래에 새로운 내용을 붙여서 파일을 작성하게 된다. 만약 기존 내용이 필요없고 새로운 내용으로만 쓰고 싶다면 'w' 를 써주면 된다.
그 뒤에 한글이 안깨지게 하기 위해서 encoding="utf8 을 써준다.
[ 전체코드 ]
import requests, sys, datetime
from bs4 import BeautifulSoup
sys.stdout = open('mydaily_report.txt ','a', encoding="utf8")
def oneclick_inf(url):
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")
return soup
def whether():
url = "https://search.naver.com/search.naver?sm=tab_hty.top&where=nexearch&query=%EC%84%9C%EC%9A%B8+%EB%82%A0%EC%94%A8&oquery=%EB%82%A0%EC%94%A8&tqi=hrW1AlprvhGssfxvMv0ssssstcN-423628"
soup = oneclick_inf(url)
curr_temp = soup.find("div",attrs={"class":"temperature_text"}).get_text()
detail = soup.find("p" , attrs={"class" : "summary"}).get_text()
min_temp = soup.find("span",attrs={"class":"lowest"}).get_text()
max_temp = soup.find("span",attrs={"class":"highest"}).get_text()
dust = soup.find("ul" , attrs={"class" : "today_chart_list"}).get_text()
print("")
print("[오늘의 날씨]")
print(curr_temp)
print(detail)
print(min_temp)
print(max_temp)
print(dust)
print("==== 시작선 ====")
current = datetime.datetime.now()
current_time = current.replace(microsecond=0)
print(current_time)
whether()
print("==== 끝 ====")
실행을 해보면 mydaily_report.txt 파일이 생성된다.
파일을 열어보면 스크래핑한 내용이 잘 들어가 있는 것을 확인 할 수 있다.
# 웹 스크래핑은 유튜버 나도코딩님의 무료영상을 여러번 돌려보고 공부해가며 코드를 짰다. 이 글을 보지는 않겠지만 나도코딩님께 감사하다는 말을 전하고 싶다.
ㅣ이후작업
이후로는 스크래핑을 좀 더 정교하고 디테일하게 하고 저장한 TXT파일을 홈페이지나 카톡에 연결해 받아볼 수 있는 작업을 해보려고 한다. 더디지만 하나씩, 한발씩 해나가다보면 내가 필요한 작은 프로그램정도는 만들어 볼 수 있지 않을까?
'프로그램-코딩' 카테고리의 다른 글
인공지능(AI) 개발자로 거듭날 수 있는 기회, 방법 [AI Tech 부스트캠프 4기 모집] (0) | 2022.07.22 |
---|---|
네이버 크롤링 테스트 (0) | 2022.07.01 |
독학으로 코팅 공부하기 (프로그래밍 언어: Python/파이썬, 파이썬을 선택한 이유) (0) | 2022.06.16 |
비전공자의 독학 코딩 공부 생존일지 (HTML, CSS, JS) (0) | 2022.06.05 |
비전공자, 심지어는 문과생 앱개발을 꿈꾸다 (코딩 독학/공부 순서) (0) | 2022.04.10 |
댓글