id 선택자
<style>
#id이름{}
</style>
class 선택자
<style>
.class이름{}
</style>
페이지 콘텐츠(the page content)는 DOM 에 저장되고 자바스크립트를 통해 접근하거나 조작할 수 있다. 이것을 방정식으로 표현하면 아래와 같다.
API (web or XML page) = DOM + JS (scripting language)
pip install beatifulsoup4
import requests
from bs4 import BeautifulSoup
#page정보를 크롤링 할 수 있도록 준비
url = 'https://google.com'
page = requests.get(url) #page의 정보를 받아옴.
soup = BeautifulSoup(page.content, 'html.parser')
#page.content : page의 내용물을 문자열로 변환
#page.content를 html.parser로 파싱
#parsing : 일련의 문자열을 의미있는 토큰으로 분해하고 그것들로 이루어진 Parse tree를 만드는 과정.
#준비된 soup에서 정보 빼내오기
find()
find_all()
data_id = soup.find(id = 'dog') #해당id를 가진 요소찾기
data_tag = soup.find('div') #해당태크를 가진 요소찾기
data_class = soup.find(class_='cat') #해당클래스를 가진 요소찾기
data_string = soup.find(string = 'raining') #해당 문자열이 포함되어있는 요소찾기
data_class_tag = soup.find('div', class_='cat') #태그와 클래스를 동시에 만족시키는 요소찾기
data_class_tag = soup.find('div', attrs = {"class" : "cat"}) #위의 코드와 동일하게 작동
data.get("href") #data가 가지고 있는 요소에서 href 속성의 값을 반환
data.get_text() #text값 반환
#css 문법사용
data_class = soup.select(".cat") #해당클래스를 가진 요소찾기
data_id = soup.select("#dog") #해당id를 가진 요소찾기