Web Crawling 웹크롤

1. 웹 크롤링 작업: 2. 모듈 설치 문제 해결: 3. 파일 내용 변경 작업: 5. GUI 프로그램 제작: Python을 사용하여 […]

1. 웹 크롤링 작업:

  • 질문: http://www.0000.com/sub/ 디렉토리 및 하위 디렉토리에서 “work”라는 단어를 포함하는 모든 파일을 로컬 디렉토리 c:/beautifulsoup/min/에 지정된 규칙에 따라 저장하고자함
  • 해결: Python을 사용하여 requestsBeautifulSoup 라이브러리로 웹 크롤링을 수행하는 코드를 작성하였습니다. 이 코드는 지정된 URL에서 “work”라는 단어가 포함된 파일을 찾아 다운로드하고, 규칙에 따라 로컬 디렉토리에 저장합니다.

2. 모듈 설치 문제 해결:

  • 질문: 크롤링 스크립트를 실행하려고 할 때 requests 모듈이 없어서 ModuleNotFoundError가 발생
  • 해결: pip install requests 명령을 사용하여 requests 모듈을 설치하는 방법

3. 파일 내용 변경 작업:

  • 질문: c:/beautifulsoup/min/ 폴더 안의 모든 파일에서 특정 문자열을 다른 문자열로 변경하는 방법을 요청
  • 해결: 해당 디렉토리의 모든 파일을 순회하며, 대상 문자열을 찾고 이를 새로운 문자열로 대체하는 Python 스크립트를 작성했습니다. 이 스크립트는 파일 내용을 읽고, 변경 사항을 적용한 후 다시 저장합니다.

5. GUI 프로그램 제작:

  • 질문: 파일 내용 수정 작업을 GUI로 쉽게 처리할 수 있는 프로그램을 만들고자함, 즉, 원하는 디렉토리를 입력할 수 있는 입력창과 특정 문자열을 변경이나 제거하고자하는 대상 문자열을 입력하는 입력창과 변경하고자하는 값을 입력할 수 있는 창을 만들어서 이를 수시로 활용할 수 있도록 Python 프로그램 제
  • 해결: Python의 tkinter 라이브러리를 사용하여 사용자가 원하는 디렉토리, 대상 문자열, 대체 문자열을 입력할 수 있는 GUI 프로그램을 제작했습니다. 이 프로그램은 사용자가 입력한 정보에 따라 파일 내용을 수정하고, 결과를 팝업 메시지로 알려줍니다.

Python을 사용하여 원하는 디렉토리, 변경하고자 하는 문자열, 변경 후의 문자열을 입력받아 파일 내용을 수정하는 간단한 프로그램입니다. 이 프로그램은 tkinter GUI 라이브러리를 사용하여 사용자가 입력할 수 있는 창을 제공합니다.

python코드 

import os
import tkinter as tk
from tkinter import filedialog, messagebox

# 파일 내용 수정 함수
def modify_files(directory, target_str, replacement_str):
modified_files = []
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(".php"): # 특정 확장자만 수정
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()

if target_str in content:
content = content.replace(target_str, replacement_str)
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
modified_files.append(file_path)

return modified_files

# 디렉토리 선택 창
def select_directory():
directory = filedialog.askdirectory()
directory_entry.delete(0, tk.END)
directory_entry.insert(0, directory)

# 실행 버튼 클릭 시 호출되는 함수
def execute():
directory = directory_entry.get()
target_str = target_entry.get()
replacement_str = replacement_entry.get()

if not directory or not target_str:
messagebox.showerror("입력 오류", "모든 필드를 입력해야 합니다.")
return

modified_files = modify_files(directory, target_str, replacement_str)

if modified_files:
messagebox.showinfo("완료", f"{len(modified_files)}개의 파일이 수정되었습니다.")
else:
messagebox.showinfo("완료", "해당 문자열이 포함된 파일이 없습니다.")

# GUI 설정
root = tk.Tk()
root.title("파일 내용 수정기")

tk.Label(root, text="디렉토리 선택:").grid(row=0, column=0, padx=10, pady=5)
directory_entry = tk.Entry(root, width=50)
directory_entry.grid(row=0, column=1, padx=10, pady=5)
tk.Button(root, text="찾아보기", command=select_directory).grid(row=0, column=2, padx=10, pady=5)

tk.Label(root, text="대상 문자열:").grid(row=1, column=0, padx=10, pady=5)
target_entry = tk.Entry(root, width=50)
target_entry.grid(row=1, column=1, padx=10, pady=5)

tk.Label(root, text="변경 문자열:").grid(row=2, column=0, padx=10, pady=5)
replacement_entry = tk.Entry(root, width=50)
replacement_entry.grid(row=2, column=1, padx=10, pady=5)

tk.Button(root, text="실행", command=execute).grid(row=3, column=1, padx=10, pady=10)

root.mainloop()

프로그램 설명:

  1. GUI 구성:
    • tkinter 라이브러리를 사용하여 간단한 GUI를 구성했습니다. 사용자는 디렉토리를 선택하고, 변경할 대상 문자열과 변경할 문자열을 입력할 수 있습니다.
  2. 디렉토리 선택:
    • select_directory() 함수는 사용자가 디렉토리를 선택할 수 있도록 합니다. 선택한 디렉토리는 텍스트 상자에 표시됩니다.
  3. 실행:
    • execute() 함수는 사용자가 입력한 디렉토리 내의 모든 PHP 파일을 검색하고, 대상 문자열을 변경 문자열로 대체합니다.
  4. 메시지 출력:
    • 작업이 완료되면 수정된 파일의 수를 팝업 메시지로 표시합니다. 대상 문자열이 없으면 해당 메시지가 출력됩니다.

실행 방법:

  1. 위의 코드를 file_modifier.py로 저장합니다.
  2. Python 환경에서 tkinter 라이브러리가 설치된 상태에서 이 파일을 실행하면 GUI 창이 나타납니다.
  3. 원하는 디렉토리, 대상 문자열, 변경 문자열을 입력하고 “실행” 버튼을 클릭하여 작업을 수행합니다.

이 프로그램을 활용하면 다양한 파일 수정 작업을 손쉽게 수행할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다