Web scraping

seongyong·2021년 5월 23일
0

데이터 엔지니어링

목록 보기
6/11

학습내용

css구조

id 선택자
<style>
	#id이름{}
</style>

class 선택자
<style>
	.class이름{}
</style>

DOM

  • DOM : document object model, HTML, XML 문서의 프로그래밍 interface
    문서를 객체화 시켜서 작업하기 편하게 만들어주는 것.

페이지 콘텐츠(the page content)는 DOM 에 저장되고 자바스크립트를 통해 접근하거나 조작할 수 있다. 이것을 방정식으로 표현하면 아래와 같다.

API (web or XML page) = DOM + JS (scripting language)

사용
  • getElementsbyTagName: 태그 이름으로 문서의 요소들을 리턴
  • getElementById: 'id' 가 일치하는 요소들을 리턴
  • getElementsByClassName: '클래스' 가 일치하는 요소들을 리턴
  • querySelector: 셀렉터(들)과 일치하는 요소를 리턴
  • querySelectorAll: 셀렉터(들)과 일치하는 모든 요소들을 리턴

BeatifulSoup

설치

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를 가진 요소찾기

0개의 댓글