안녕하세요, 고준영입니다. 오늘은 beautifulsoup + openpyxl을 활용하여 날씨 가져오는 법을 알아보겠습니다.
군 복무 시절 아침마다 하는 일이 사령부 홈페이지에서 날씨 읽어와서 결산에 넣는 일이었는데요. 이참에 한번 해볼까 해서 만들었습니다.
from openpyxl import load_workbook
import requests
from bs4 import BeautifulSoup as bs
url = 'http://naver.com' # 원하는 url로 바꾸십시오
page = requests.get(url)
soup = bs(page.text, 'html.parser') # 여기까지는 붙여넣기 하셔도 됩니다
elem = soup.select_one('.weather_area .state')
wb = load_workbook("empty.xlsx")
wb.active.cell(column=3, row=2).value = elem.text
wb.save("empty.xlsx")
url 변수에 원하는 URL값을 넣고, soup 변수 선언하는 곳까지는 CTRL+C, V 하셔도 됩니다.
<a data-clk="squ.weat" href="https://weather.naver.com/today/16730250" class="weather_area ico_w01">
<div class="current_box">
<strong class="current" aria-label="현재기온">27.2°</strong>
<strong class="state">맑음</strong>
</div>
<div class="degree_box">
<span class="min" aria-label="최저기온">16.0°</span>
<span class="max" aria-label="최고기온">28.0°</span>
</div>
<span class="location">평양시</span>
</a>
beautifulsoup 상에서 CSS-selector를 통해 원하는 엘리먼트를 가져오는, select 함수를 사용하겠습니다.
맨 위에 있는 a태그를 보니 weather_area라는 클래스가 있고, 원하는 strong 태그에는 state 클래스가 있습니다.
soup.select_one('.weather_area .state') |
.class .class 를 사용할 시 왼쪽 .class는 부모 클래스, 오른쪽 .class는 자식 클래스로 선택합니다.
하여튼 이렇게 선택해서 엑셀에 집어넣기만 하면 끝입니다. 엑셀에 데이터를 넣는 방법은 링크를 참조하세요.
2022.09.14 - [분류 전체보기] - [openpyxl 기본] 002. 엑셀파일 불러오기
이상 데이터를 크롤링해서 엑셀에 집어넣는 연습을 했습니다. 감사합니다.
해당 블로그에서 무료 업무 자동화 툴을 제작해 드리고 있습니다.
단순 제 학습용 및 게시글로서 활용되며, 전해주신 데이터는 철저히 익명 처리해서 활용할 예정입니다.
많은 관심 부탁드립니다.
e-mail : lilarcor27@gmail.com
'자동화 > 파이썬' 카테고리의 다른 글
[openpyxl 기본] 003. 엑셀 배열로 한 행씩 입력하기 (0) | 2022.09.14 |
---|---|
[openpyxl 기본] 002. 엑셀파일 불러오기 (0) | 2022.09.14 |
[openpyxl 기본] 001. 엑셀파일에 Hello world 입력하기 (0) | 2022.09.14 |