오늘은 크롤링을 사용할 일이 있어서 예전에 배웠던 파이썬을 복습하면서 다시 만져봤다.
beautifulSoup4(bs4) 패키지를 사용.
bs4은 크롤링을 위한 강력한 라이브러리다. 주로 HTML 및 XML 형식의 문서를 파싱하고 조작하는 데 사용되고, 웹 페이지에서 특정 요소를 선택하고 해당 요소의 텍스트, 속성 등을 추출할 수 있다.
웹 페이지를 가져오기
requests 또는 urllib 같은 라이브러리를 사용하여 웹 페이지의 HTML을 가져온다.
BeautifulSoup을 사용하여 HTML을 파싱합
BeautifulSoup 객체를 생성하여 HTML을 파싱하고, 파싱된 HTML을 조작한다.
원하는 요소를 선택
find(), find_all(), select() 등의 메서드를 사용하여 HTML에서 원하는 요소를 선택
선택한 요소에서 데이터를 추출
선택한 요소에서 텍스트, 속성 등을 추출하여 필요한 작업을 수행
requests bs4 패키지 필수 설치!
import requests
from bs4 import BeautifulSoup
# 웹 페이지 가져오기
url = 'https://example.com'
response = requests.get(url)
html = response.text
# BeautifulSoup을 사용하여 HTML 파싱
soup = BeautifulSoup(html, 'html.parser')
# 원하는 요소 선택하여 데이터 추출
title = soup.find('title').text
print("웹 페이지 제목:", title)
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('ulr주소입력',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
# soup이라는 변수에 "파싱 용이해진 html"이 담긴 상태가 됨.
# 이후 코딩을 통해 필요한 부분을 추출하면 된다.
# 한 개만 가져올 때, 원하는 링크에다 copy selector하고
변수명 = soup.select_one(‘카피한셀렉터’)
# Print(변수명)하면 전체 다. print(변수명.text)하면 제목만. print(변수명[‘href’])하면 그 앞에꺼만.
# 여러개 가져 올 때 셀렉터에 중복된걸 확인 후, 변수 세우고 중복된 걸 select
# 그 변수에 리스트로 쭉 들어간 데이터를 반복문으로 추려내서 원하는 데이터 도출!
movies = soup.select('#old_content > table > tbody > tr')
for movie in movies:
a = movie.select_one('td.title > div > a')
if a is not None:
print(a.text)
.strip() 붙이면 여백 제거해서 깔끔하게 나옴.
.text[0:2] 붙이면 텍스트만 앞에서 2글자만 끊기.