HTML/CSS, 크롤링, 웹 스크레이핑, DOM, beatifulsoup 라이브러리, requests 라이브러리
DOM
에 대해서 처음 들었을 때 뭔지 헷갈렸는데, 쉽게 생각하면 html 문서를 구조화/객체화해서 파이썬으로 각 요소에 접근할 수 있게 해준다는 측면에서 의미가 있다고 생각하면 될 것 같다.document.querySelectorAll('p') # p 태그를 사용하는 요소들을 볼 수 있다.
getElementsbyTagName: 태그 이름으로 문서의 요소들을 리턴
getElementById: 'id' 가 일치하는 요소들을 리턴
getElementsByClassName: '클래스' 가 일치하는 요소들을 리턴
querySelector: 셀렉터(들)과 일치하는 요소를 리턴
querySelectorAll: 셀렉터(들)과 일치하는 모든 요소들을 리턴
깊이의 차이? 크롤링은 정해진 규칙에 따라 정해진 공간의 정보를 수집하는 과정을 말하고, 스크레핑은 좀 더 상위 개념
였다. 스크레이핑을 좀 더 포괄적인 개념으로 생각하면 된다. (추가로 찾아본 블로그 글)requests 라이브러리
웹과 소통을 편하게 해주는 파이썬 라이브러리다. 오늘 사용한 주요 형태는 아래와 같다.
import requests #참고로 기본 설치가 안되어있으므로 pip install 해줘야 함.
requests.get('https://google.com') #페이지가 존재한다면 response로 200을 반환한다. 404에러 등 원래 알던 에러 종류를 반환하기도 한다.
page = requests.get(Mymovie_URL) #주로 이렇게 할당해서 beautifulsoup로 넘겨 사용하였다.
Beatifulsoup
라이브러리import requests
from bs4 import BeautifulSoup
url = 'https://google.com'
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
#이렇게 soup로 지정해고나서 beautifulsoup의 다양한 메소드를 사용하면 된다.
# 클래스 검색!
soup.find(class_ = 'result_thumb') #상위 하나만
soup.find_all(class_ = 'result_thumb') #전부!
#(참고로 id = 'dog') 식으로도 검색할 수 있다.
#태그를 추가해서 검색도 가능!
cat_div_elements = soup.find_all('div', class_='cat')
#사용 예시
<p class='cat'>This is a p-cat</p> #이런 html 코드가 있다고 해보자.
cat_el = soup.find('p', class_='cat')
cat_el.text #=> 'This is a p-cat'
사실상 오늘의 하이라이트였다.