혼자한다.
아니다. 지피티와 함께 한다.
중기부 홈페이지에 있는 '보도자료' 게시판에서 첨부문서인 보도자료를 다운 받는 파이썬 코드
아래 이미지 첨부를 참고하면 된다.
한 페이지만 크롤링 가능하다.
파일을 모아놓을 별도의 폴더를 생성하게 했고,
폴더명은 코드 실행시간을 넣었다.
목록은 CSV 파일로 저장하게 했다.
[20240329] 일부 수정
보도자료 파일명에 특수한 문자가 포함될 때 생기는 오류를 점검해 코드를 업데이트 했다.
아래는 코드 전문
import os
import requests
from bs4 import BeautifulSoup
import csv
from datetime import datetime
def create_download_folder():
now = datetime.now()
folder_name = now.strftime("%Y%m%d") + "_mss_press_list"
folder_path = os.path.join("C:/down_p", folder_name)
if not os.path.exists(folder_path):
os.makedirs(folder_path)
print(f"'{folder_path}' 폴더가 생성되었습니다.")
else:
print(f"'{folder_path}' 폴더가 이미 존재합니다.")
return folder_path
def sanitize_filename(filename):
invalid_chars = '<>:"/\\|?*\n'
for char in invalid_chars:
filename = filename.replace(char, '')
return filename
def download_press_releases(download_dir):
url = "https://www.mss.go.kr/site/smba/ex/bbs/List.do?cbIdx=86"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
title_elements = soup.find_all('td', class_='subject bss-sub-text')
file_link_elements = soup.find_all('td', class_='attached-files')
date_elements = soup.find_all(lambda tag: tag.name == 'td' and tag.text.strip().startswith('2024'))
press_release_details = []
for title_element, file_link_element, date_element in zip(title_elements, file_link_elements, date_elements):
press_release_title = title_element.find('a').text.strip()
file_link = "https://www.mss.go.kr" + file_link_element.find('a')['href']
date = date_element.text.strip().replace(".", "-")
file_name = sanitize_filename(f"{date}_{press_release_title}.pdf")
file_path = os.path.join(download_dir, file_name)
with open(file_path, 'wb') as f:
f.write(requests.get(file_link).content)
press_release_details.append([date, file_name, file_link])
print("Press release title (Korean):", press_release_title)
print("Date:", date)
print("File downloaded and saved as:", file_path)
return press_release_details
def write_details_to_csv(download_dir, press_release_details):
csv_file_path = os.path.join(download_dir, 'press_list_csv.csv')
with open(csv_file_path, 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Date', 'File Name', 'Link Address'])
writer.writerows(press_release_details)
print(f"Press list saved as: {csv_file_path}")
download_dir = create_download_folder()
press_release_details = download_press_releases(download_dir)
write_details_to_csv(download_dir, press_release_details)
'python' 카테고리의 다른 글
[혼자하는 파이썬] 파이썬으로 무료 쇼츠 만들기 (1) | 2024.03.29 |
---|---|
[혼자하는 파이썬] 파이썬으로 mp3 음원 만들기 (1) | 2024.03.29 |
[혼자하는 파이썬] 파이썬으로 네이버 뉴스 검색 마스터: 검색어와 기간 설정하기 (0) | 2024.03.08 |
[혼자하는 파이썬] 금융감독원 보도자료 목록 크롤링 (0) | 2024.03.06 |
[혼자하는 파이썬] 네이버 뉴스 칼럼 카테고리 크롤링 코드 (0) | 2024.03.05 |