반응형
아래 코드를 주피터노트북에서 실행하면
질병관리청의 "전국 보건소 정보"를 엑셀로 저장한다.
In [ ]:
%pip install selenium lxml
In [1]:
import pandas as pd
from io import StringIO
from selenium import webdriver
In [63]:
driver = webdriver.Chrome()
driver.get("https://nip.kdca.go.kr/irhp/mngm/goVcntMngm.do?menuLv=3&menuCd=336")
In [64]:
# 검색버튼을 눌러줘
driver.find_element("xpath", "/html/body/div[2]/div[3]/div/main/div[2]/form/fieldset/div/input[2]").click()
In [65]:
df = pd.read_html(StringIO(driver.page_source))[0]
In [66]:
page = 2
while True:
driver.execute_script(f"fnSearchList_page({page})")
if "조회된 결과가 없습니다" in driver.page_source:
break
df = pd.concat([df, pd.read_html(StringIO(driver.page_source))[0]], ignore_index=True)
page += 1
In [54]:
df.tail()
Out[54]:
보건소명 | 전화번호 / 예방접종실 | 주소 | 홈페이지 | |
---|---|---|---|---|
256 | 전북특별자치도장수군보건의료원 | 063-350-2664 / 063-350-2663 | 전북특별자치도 장수군 장수읍 장천로 247 - | 바로가기 |
257 | 전북특별자치도전주시보건소 | 063-281-6251 / 063-281-6251 | 전북특별자치도 전주시 완산구 전라감영로 33 (중앙동4가) 전주시보건소 | 바로가기 |
258 | 전북특별자치도전주시보건소덕진보건소 | 063-250-3913 / 063-250-3913 | 전북특별자치도 전주시 덕진구 벚꽃로 55, (진북동) 덕진보건소 (우아동3가) | 바로가기 |
259 | 전북특별자치도정읍시보건소 | 063-539-7991 / 063-539-7991 | 전북특별자치도 정읍시 수성1로 61 (수성동) - | 바로가기 |
260 | 전북특별자치도진안군보건소 | 063-430-8522 / 063-430-8551 | 전북특별자치도 진안군 진안읍 진무로 1189 (진안보건소) | 바로가기 |
In [67]:
df
Out[67]:
보건소명 | 전화번호 / 예방접종실 | 주소 | 홈페이지 | |
---|---|---|---|---|
0 | 서울특별시강남구보건소 | 02-3423-7224 / 02-3423-7224 | 서울특별시 강남구 선릉로 668 - | 바로가기 |
1 | 서울특별시강동구보건소 | 02-3425-6693 / 02-3425-6732 | 서울특별시 강동구 성내로 45 (성내동) | 바로가기 |
2 | 서울특별시강북구보건소 | 02-901-7762 / 02-901-7678 | 서울특별시 강북구 한천로 897 (번동) 232 | 바로가기 |
3 | 서울특별시강서구보건소 | 02-2600-5915 / 02-2600-5915 | 서울특별시 강서구 공항대로 561 (염창동) 275-12(공항대로 561) | 바로가기 |
4 | 서울특별시관악구보건소 | 02-879-7144 / 02-879-7144 | 서울특별시 관악구 관악로 145 (봉천동) 관악구보건소 | 바로가기 |
... | ... | ... | ... | ... |
256 | 전북특별자치도장수군보건의료원 | 063-350-2664 / 063-350-2663 | 전북특별자치도 장수군 장수읍 장천로 247 - | 바로가기 |
257 | 전북특별자치도전주시보건소 | 063-281-6251 / 063-281-6251 | 전북특별자치도 전주시 완산구 전라감영로 33 (중앙동4가) 전주시보건소 | 바로가기 |
258 | 전북특별자치도전주시보건소덕진보건소 | 063-250-3913 / 063-250-3913 | 전북특별자치도 전주시 덕진구 벚꽃로 55, (진북동) 덕진보건소 (우아동3가) | 바로가기 |
259 | 전북특별자치도정읍시보건소 | 063-539-7991 / 063-539-7991 | 전북특별자치도 정읍시 수성1로 61 (수성동) - | 바로가기 |
260 | 전북특별자치도진안군보건소 | 063-430-8522 / 063-430-8551 | 전북특별자치도 진안군 진안읍 진무로 1189 (진안보건소) | 바로가기 |
261 rows × 4 columns
In [68]:
df.drop("홈페이지", axis=1).to_excel("보건소.xlsx", index=False)
In [69]:
driver.quit()
다음 포스팅에서는 이 엑셀파일을 한/글의 표로 옮겨보겠다.
미리 언급해 두는데, 한/글로 옮기는 코드는 짧다.
반응형
'아래아한글 자동화 > pyhwpx 사용법' 카테고리의 다른 글
[크롤링 연계2] 보건소 정보로 한/글 파일 만들기 (2) | 2024.01.23 |
---|---|
[pyhwpx] 그라데이션 폼 미쳤다! feat. gradation_on_cell (1) | 2024.01.18 |
[pyhwpx] set_current_field_name 의 용도 : 셀에 필드 넣기 (0) | 2024.01.17 |
댓글