웹 크롤링은 많은 데이터를 자동으로 수집하는 데 유용하지만, 수집한 데이터를 정리하지 않으면 활용하기 어렵습니다. 오늘은 Bash Shell Script를 사용하여 웹 크롤링 데이터를 정리하는 방법을 소개합니다.
1. Bash Shell Script란?
Bash는 Linux에서 기본적으로 사용하는 쉘로, 명령어를 조합하여 스크립트를 작성하면 반복적인 작업을 자동화할 수 있습니다. 웹 크롤링 데이터 정리는 아래 작업을 포함할 수 있습니다:
- 불필요한 데이터 제거
- 데이터 필터링
- 형식 변환 (예: JSON, CSV)
- 중복 데이터 제거
2. 웹 크롤링 데이터의 예시
아래는 웹에서 크롤링한 데이터 예시입니다 (HTML 형식):
<html>
<body>
<div class="article">
<h1>Title 1</h1>
<p>Content 1</p>
</div>
<div class="article">
<h1>Title 2</h1>
<p>Content 2</p>
</div>
</body>
</html>
우리는 위 데이터를 정리하여 CSV 형식으로 변환하려고 합니다.
3. 필요한 도구 설치
웹 크롤링 데이터 정리에 필요한 도구는 grep
, sed
, awk
같은 기본 유틸리티입니다. 추가적으로 데이터를 크롤링하는 데 필요한 도구로 curl
이나 wget
을 사용할 수 있습니다.
sudo apt-get install curl wget
4. Bash Script 작성
4.1 데이터 크롤링
curl
명령어를 사용해 데이터를 크롤링합니다.
#!/bin/bash
# 크롤링할 URL
URL="https://example.com/articles"
# 데이터를 저장할 파일
OUTPUT_FILE="raw_data.html"
# 웹 데이터 크롤링
curl -s "$URL" -o "$OUTPUT_FILE"
echo "데이터가 $OUTPUT_FILE에 저장되었습니다."
4.2 HTML에서 유용한 데이터 추출
grep
과 sed
를 사용하여 제목(h1
)과 본문(p
) 내용을 추출합니다.
#!/bin/bash
# 입력 파일
INPUT_FILE="raw_data.html"
# 출력 파일
OUTPUT_FILE="cleaned_data.csv"
# CSV 헤더 작성
echo "Title,Content" > "$OUTPUT_FILE"
# HTML에서 제목과 본문 추출하여 CSV 형식으로 저장
grep -oP '(?<=<h1>).*?(?=</h1>)' "$INPUT_FILE" | while read -r TITLE; do
CONTENT=$(grep -oP '(?<=<p>).*?(?=</p>)' "$INPUT_FILE" | head -n 1)
echo "$TITLE,$CONTENT" >> "$OUTPUT_FILE"
done
echo "정리된 데이터가 $OUTPUT_FILE에 저장되었습니다."
4.3 중복 데이터 제거
sort
와 uniq
명령어를 사용하여 중복 데이터를 제거합니다.
#!/bin/bash
# 입력 파일
INPUT_FILE="cleaned_data.csv"
# 출력 파일
UNIQUE_FILE="unique_data.csv"
# 중복 제거
sort "$INPUT_FILE" | uniq > "$UNIQUE_FILE"
echo "중복이 제거된 데이터가 $UNIQUE_FILE에 저장되었습니다."
5. 전체 스크립트
아래는 크롤링부터 데이터 정리, 중복 제거까지 포함한 전체 스크립트입니다.
#!/bin/bash
# 1. 웹 크롤링
URL="https://example.com/articles"
RAW_FILE="raw_data.html"
CLEAN_FILE="cleaned_data.csv"
UNIQUE_FILE="unique_data.csv"
curl -s "$URL" -o "$RAW_FILE"
echo "데이터가 $RAW_FILE에 저장되었습니다."
# 2. 데이터 정리
echo "Title,Content" > "$CLEAN_FILE"
grep -oP '(?<=<h1>).*?(?=</h1>)' "$RAW_FILE" | while read -r TITLE; do
CONTENT=$(grep -oP '(?<=<p>).*?(?=</p>)' "$RAW_FILE" | head -n 1)
echo "$TITLE,$CONTENT" >> "$CLEAN_FILE"
done
echo "정리된 데이터가 $CLEAN_FILE에 저장되었습니다."
# 3. 중복 제거
sort "$CLEAN_FILE" | uniq > "$UNIQUE_FILE"
echo "중복이 제거된 데이터가 $UNIQUE_FILE에 저장되었습니다."
6. 실행 방법
스크립트를 실행하려면 파일에 실행 권한을 부여해야 합니다.
chmod +x web_crawling_cleaner.sh
./web_crawling_cleaner.sh
스크립트 실행 후, 최종 데이터는 unique_data.csv
에 저장됩니다.
7. 마무리
이번 글에서는 Bash Shell Script를 사용해 웹 크롤링 데이터를 정리하는 방법을 살펴보았습니다. 정리된 데이터는 다양한 분석 작업에 활용할 수 있습니다. 추가적으로 데이터 정리에 awk
, jq
같은 도구를 결합하면 더욱 강력한 스크립트를 작성할 수 있습니다.
'Linux Bash shell script' 카테고리의 다른 글
Bash Shell Script에서 자주 발생하는 실수와 해결 방법 (0) | 2025.02.14 |
---|---|
Bash Shell Script - CSV 파일 처리하기 (0) | 2025.02.12 |
Linux Bash Shell Script로 사용자 관리 자동화하기 (0) | 2025.02.11 |
Bash Shell Script 서버 상태 모니터링 (0) | 2025.02.10 |
Bash Shell Script로 반복 작업 자동화하기 (0) | 2025.02.09 |