+ 개발

웹 크롤링(#Requests #BeautifulSoup)

AI.Logger 2024. 8. 11. 01:55
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드

"Image generated using DALL-E by OpenAI"


1. Requests 모듈

Requests는 Python의 HTTP 요청을 간편하게 처리할 수 있는 라이브러리입니다. 다양한 HTTP 메서드를 사용하여 데이터를 서버와 주고받을 수 있습니다.

  • GET 요청: 주로 데이터를 조회할 때 사용합니다.
import requests

URL = 'http://httpbin.org/get'
response = requests.get(URL)

print(response.status_code)
print(response.text)

 

  • POST 요청: 새로운 데이터를 서버에 제출할 때 사용합니다.
response = requests.post("http://httpbin.org/post", data={'key':'value'})

 

  • PUT 요청: 서버에 있는 데이터를 업데이트할 때 사용합니다.
response = requests.put("http://httpbin.org/put", data={'key':'value'})

 

  • DELETE 요청: 특정 리소스를 삭제할 때 사용합니다.
response = requests.delete("http://httpbin.org/delete")

 


2. Requests의 주요 기능

  • Params: URL에 파라미터를 전달하는 방법입니다.
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get(URL, params=params)

 

  • Headers: 요청에 필요한 헤더 정보를 추가할 수 있습니다.
headers = {'Content-Type': 'application/json'}
response = requests.get(URL, headers=headers)

 

  • Body: POST 요청 시 데이터를 전송할 때 사용합니다.
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post(URL, data=data)

 


3. BeautifulSoup를 활용한 HTML 파싱

BeautifulSoup은 HTML 및 XML 문서를 파싱하여 원하는 데이터를 추출할 수 있는 라이브러리입니다. 다음과 같은 기본적인 사용법을 알아봅니다.

  • HTML 소스 가져오기
from bs4 import BeautifulSoup
import requests

URL = "https://example.com"
source = requests.get(URL).text
soup = BeautifulSoup(source, 'html.parser')

 

  • 특정 태그 선택하기
    • select(): CSS 선택자를 이용하여 여러 개의 태그를 선택합니다.
    • select_one(): CSS 선택자를 이용하여 첫 번째로 매칭되는 태그를 선택합니다.
tags = soup.select('div.class_name')
tag = soup.select_one('div.class_name')

 

  • find()와 find_all()
    • find(): 첫 번째로 매칭되는 태그를 선택합니다.
    • find_all(): 매칭되는 모든 태그를 리스트로 반환합니다.
tag = soup.find('div', class_='class_name')
tags = soup.find_all('div', limit=2)