Web scraping


学習内容
css構造
id 선택자
<style>
	#id이름{}
</style>

class 선택자
<style>
	.class이름{}
</style>
DOM
  • DOM:文書オブジェクトモデル、HTML、XML文書のプログラミングインタフェース
    ドキュメントをオブジェクト化して作業します.
  • ページコンテンツ(page content)はDOMに格納され、JavaScriptからアクセスまたは操作できます.これは方程式で次のように表される.
    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를 가진 요소찾기