파이썬 프로그래밍

파이썬 bs4 beautifulsoup 웹사이트 크롤링 스크래핑

코니코니 2023. 1. 4. 15:00
반응형

파이썬 bs4 beautifulsoup 웹사이트 크롤링 스크래핑


Beautiful Soup은 웹 스크래핑에 사용되는 타사 Python 라이브러리입니다. 웹 스크래핑 및 HTML 및 XML 문서 구문 분석에 사용되는 이것은 웹사이트에서 데이터를 추출하기 위한 강력한 도구이며 다양한 방식으로 웹사이트와 상호작용하기 위해 Requests와 같은 다른 Python 라이브러리와 함께 사용할 수 있습니다.

Beautiful Soup의 주요 기능은 다음과 같습니다.

* HTML 및 XML 문서에서 데이터를 구문 분석하고 추출할 수 있습니다.
* 간단하고 사용하기 쉬운 구문이 있습니다.
* 중첩된 태그와 누락되거나 잘못된 형식의 데이터가 있는 복잡한 HTML 문서를 처리할 수 있습니다.
* 태그를 추가하거나 수정하여 HTML 문서를 수정할 수 있습니다.
* find(), find_all(), select() 등 다양한 검색 방법을 사용하여 태그 및 태그 속성을 검색할 수 있습니다.

뷰티풀수프를 사용하기 위해서는 먼저 pip install beautifulsoup4를 이용하여 설치해야 합니다. 그런 다음 Python 스크립트로 가져와 HTML 또는 XML 문서에서 데이터를 구문 분석하고 추출하는 데 사용할 수 있습니다.

다음은 Beautiful Soup을 사용하여 HTML 문서에서 데이터를 구문 분석하고 추출하는 방법의 예입니다. Beautiful Soup을 사용하여 태그를 추가하거나 수정하여 HTML 문서를 수정한 다음 수정된 문서를 저장할 수도 있습니다.

Beautiful Soup과 Requests를 함께 사용하려면 먼저 Requests를 사용하여 웹 사이트의 HTML 콘텐츠를 가져온 다음 필요한 데이터를 구문 분석하고 추출하기 위해 Beautiful Soup에 전달할 수 있습니다. 다음은 이를 수행할 수 있는 방법의 예입니다.

import requests
from bs4 import BeautifulSoup

# Use Requests to get the HTML content of the website
url = 'https://www.example.com'
response = requests.get(url)
html_content = response.content

# Create a BeautifulSoup object from the HTML content
soup = BeautifulSoup(html_content, 'html.parser')

# Extract the data you want to extract
title = soup.title
print(title)

# Find all the links in the document
links = soup.find_all('a')
print(links)

# Extract the text from the document
text = soup.get_text()
print(text)

 

요청 라이브러리를 사용하여 POST 요청을 만들고, 양식 데이터를 보내고, 웹 스크레이퍼를 인증할 수도 있습니다. 아래는 두 라이브러리를 사용하여 무신사 가디건 상품들 제목을 추출하는 예시입니다.

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                         'Chrome/104.0.0.0 Safari/537.36'}

site_url = 'https://www.musinsa.com/search/musinsa/integration?type=&q=%EA%B0%80%EB%94%94%EA%B1%B4'
test = requests.get(site_url, timeout=5, headers=headers).text
# BeautifulSoup에 requests 데이터 넣기
soup = BeautifulSoup(test, 'html.parser')
# find_all 기능으로 class명이 list_info인 요소를 전부 찾기
site_data = soup.find_all(class_='list_info')

for s in site_data:
    # replace 함수로 필요없는 문자열 제외시키기
    get_txt = s.text.replace('  ', '').replace('\n', '')
    print(get_txt)

==결과==
헤비오버핏 램스울 가디건 챠콜
GAFF TEX CARDIGAN (BLACK)
Miller Heavyweight Cardigan Burnt Orange
[코튼100]소프트 베이직 가디건 블랙 COOSCD001BLACK
V NECK CABLE CARDIGAN NAVY
울 니트 가디건 자켓_Midnight blue
오버핏 크롭 카라 가디건 [블랙]
.
.
.
반응형