크롤링한 데이터(정책) > 엑셀 > 데이터베이스 > 스프링 > 프론트에 띄우기 ==> 일단 이렇게 생각하고 작업 중이다.
데이터 양이 많아서 스프링 애플리케이션 내에서 메모리에 모두 유지하는 것보다는
데이터베이스에 저장하여 관리하는 것이 좋을 것 같아서 저러한 과정을 거치기로 한 것.
크롤링한 데이터를 엑셀 파일로 저장하는 과정은 생각보다 어렵지 않았다
1. 먼저 필요한 라이브러리 설치
- pip install openpyxl
2. 엑셀파일 만들고 저장
# 엑셀 만들기
import openpyxl
wb = openpyxl.Workbook()
ws = wb.create_sheet('주거정책')
ws['A1'] = 'number'
ws['B1'] = 'name'
ws['A2'] = 1
ws['B2'] = '홍길동'
wb.save(r'C:\Users\tmdgm\Desktop\pyex\주거정책_data.xlsx')
엑셀파일 만들기 > openpyxl.Workbook()
엑셀 워크시트 만들기 > wb.create_sheet('엑셀시트이름')
행, 열에 들어갈 데이터 추가한 후 wb.save('저장할 경로') 로 저장하면 해당 폴더에 엑셀 시트가 만들어지는 것을 볼 수 있다.
이 코드를 데이터 크롤링하는 코드와 합쳐보면
# 가져온 데이터 엑셀파일로 저장
import requests
from bs4 import BeautifulSoup
import openpyxl
fpath = r'C:\Users\tmdgm\Desktop\pyex\주거정책_data.xlsx'
wb = openpyxl.load_workbook(fpath)
ws = wb.active # 현재 활성화된 시트 선택 - 기본시트 선택
row = 2
for i in range(1, 5):
response = requests.get(f'https://youth.incheon.go.kr/youthpolicy/youthPolicyInfoList.do?menudiv=dwelling&pgno={i}')
html = response.text
soup = BeautifulSoup(html, 'html.parser')
titles = soup.select(".boardList .con-box .tit") # 정책 title
links = soup.select(".boardList .btn-box .btn:first-child") # 정책 url
# for link in links:
# url = link.attrs['href']
# print(f'https://youth.incheon.go.kr{url}')
for title in titles:
print(title.text.strip())
ws[f'B{row}'] = title.text
row += 1
wb.save(fpath)
1. 엑셀 파일을 불러와서
openpyxl.load_workbook(엑셀파일저장되어있는경로)
2. 현재 활성화된 시트를 선택하고
wb.active
3. 크롤링한 데이터들을 행에 알맞게 저장한다.
ws.[f'B{rows}'] = title.text
B행에 쭉 저장되겠죠 ?
4. 저장하면 끝.
wb.save(fpath)
'졸업작품' 카테고리의 다른 글
Pandas 데이터 MySQL - Node.JS 연결 (0) | 2024.04.21 |
---|---|
크롤링한 데이터 Pandas로 관리 (0) | 2024.04.21 |
[Crowling] python 웹 크롤링 (0) | 2024.03.17 |
[Spring] 스프링 공공데이터 API 활용하기(1) - 데이터 받아오기 (1) | 2024.03.16 |