Akashic Records

8.1 웹 스크래핑 본문

Python for Beginners

8.1 웹 스크래핑

Andrew's Akashic Records 2023. 3. 24. 10:26
728x90

웹 스크래핑에 대해 좀 더 상세하게 설명하겠습니다. 웹 스크래핑의 주요 단계는 다음과 같습니다.

웹 페이지 요청: requests 라이브러리를 사용하여 웹 페이지의 내용을 가져옵니다.
HTML 파싱: BeautifulSoup 라이브러리를 사용하여 웹 페이지의 HTML을 파싱하고, 필요한 데이터를 추출합니다.
데이터 처리 및 저장: 추출한 데이터를 처리하고 원하는 형식으로 저장합니다.
여기서는 웹 페이지에서 제품 이름과 가격 정보를 추출하는 예제를 살펴보겠습니다.

먼저 필요한 라이브러리를 설치합니다.

pip install requests beautifulsoup4

 

예제: 가상의 온라인 쇼핑몰에서 제품 이름과 가격 정보 가져오기

import requests
from bs4 import BeautifulSoup

url = "https://example.com/products"  # 가상의 온라인 쇼핑몰 URL

response = requests.get(url)

if response.status_code == 200:
    html_content = response.text
    soup = BeautifulSoup(html_content, 'html.parser')

    products = soup.select('.product')

    for product in products:
        product_name = product.select_one('.product-name').get_text(strip=True)
        product_price = product.select_one('.product-price').get_text(strip=True)

        print(f"제품 이름: {product_name}, 가격: {product_price}")
else:
    print(f"웹 페이지를 가져오는 데 실패했습니다. 상태 코드: {response.status_code}")

이 예제에서는 웹 페이지의 제품 이름과 가격 정보를 추출합니다. soup.select() 메서드를 사용하여 제품에 해당하는 HTML 요소를 선택하고, for 루프를 사용하여 각 제품의 이름과 가격 정보를 가져옵니다. .select_one() 메서드를 사용하여 이름과 가격에 해당하는 요소를 선택한 후, .get_text() 메서드를 사용하여 해당 요소의 텍스트를 가져옵니다. strip=True 옵션은 텍스트 앞뒤의 공백을 제거합니다.

추출한 데이터를 원하는 형식으로 저장하는 방법도 다양합니다. 예를 들어, CSV 파일로 저장할 수 있습니다.

import csv

# ... (웹 페이지 요청 및 HTML 파싱 코드)

with open('products.csv', 'w', newline='', encoding='utf-8') as csvfile:
    csv_writer = csv.writer(csvfile)
    csv_writer.writerow(["제품 이름", "가격"])  # 헤더 작성

    for product in products:
        product_name = product.select_one('.product-name').get_text(strip=True)
        product_price = product.select_one('.product-price').get_text(strip=True)

        csv_writer.writerow([product_name, product_price])  # 제품 정보 작성

이 코드는 추출한 제품 이름과 가격 정보를 CSV 파일로 저장합니다. csv 모듈을 사용하여 CSV 파일을 열고, csv.writer 객체를 생성합니다. 헤더를 작성한 후, for 루프를 사용하여 각 제품의 이름과 가격 정보를 가져와 CSV 파일에 작성합니다.

웹 스크래핑을 수행할 때 주의해야 할 사항들은 다음과 같습니다.

  • 웹사이트의 이용 약관 확인: 웹사이트의 이용 약관에 따라 웹 스크래핑이 금지되어 있을 수 있으므로, 이용 약관을 확인해야 합니다.
  • robots.txt 파일 확인: 웹사이트의 robots.txt 파일에는 웹 크롤러 및 스크래퍼에 대한 규칙이 명시되어 있으므로, 이를 확인하고 준수해야 합니다.
  • 요청 간격 조절: 웹사이트에 과도한 요청을 보내지 않도록 요청 간격을 적절하게 조절해야 합니다. time.sleep() 함수를 사용하여 요청 간격을 조절할 수 있습니다.
  • 유지 보수: 웹사이트의 구조가 변경되면 스크립트가 작동하지 않을 수 있으므로, 정기적으로 스크립트를 확인하고 유지 보수가 필요할 수 있습니다.

웹 스크래핑은 웹 페이지의 정보를 자동으로 추출하는 데 유용한 기술입니다. 그러나 웹사이트의 이용 약관과 robots.txt 파일을 준수하고, 웹사이트의 부담을 최소화하는 방법으로 웹 스크래핑을 수행해야 합니다. 웹 스크래핑을 통해 얻은 데이터를 처리 및 저장하여 분석, 시각화, 머신 러닝 등 다양한 목적으로 활용할 수 있습니다.

728x90

'Python for Beginners' 카테고리의 다른 글

8.3 웹 프레임워크  (1) 2023.03.24
8.2 웹 개발 API 사용법  (0) 2023.03.24
7.5 기타 유용한 라이브러리  (0) 2023.03.23
7.4 로깅  (0) 2023.03.23
7.3 정규 표현식  (0) 2023.03.23
Comments