민듀키티

따라하며 익히는 크롤링 마스터 1 (크롤링 기초) 본문

Data Analysis/크롤링

따라하며 익히는 크롤링 마스터 1 (크롤링 기초)

민듀키티 2022. 2. 2. 17:54

1. 크롤링 기법 소개

 

(1) 크롤링 프로세스 이해

라이브러리 호출 -> URL 접속 -> HTML 받아오기 -> 정보찾기 -> 저장하기

 

Requests, BeautifulSoup Selnium, BeautifulSoup Selenium (Only)
import requests
import bs4 import BeautifulSoup
from selunium import webdriver
import bs4 import BeautifulSoup
from selunium import webdriver
req = requests.get(url) browser = webdriver.Chrome()
brower.get(url)
browser = webdriver.Chrome()
brower.get(url)
html = req.txt html = browser.page_source html을 받아오지 않는다
-> 현재 브라우저와 계속 연동
soup = BeautifulSoup(html, 'html parser'
data = soup.select('조건')
soup = BeautifulSoup(html, 'html parser'
data = soup.select('조건')
data = 
brower.find_elements_by_css_selector('조건')

 

3가지 방법의 장&단점 정리

Requests, BeautifulSoup Selnium, BeautifulSoup Selenium (Only)
특징 ) HTML 내부 데이터만 가능 특징) HTML 외부 데이터도 모두 가능
(+) 굉장히 빠르다
(-) 외부 데이터 수집 불가

-> 페이지 안에 있는 데이터만
(+) 모든 데이터를 가져올 수 있다
(-) 상대적으로 느리다
(+) 브라우저 조작 가능

 

BeautifulSoup -> select('조건A')

selenium -> find_elements_by_css_selector('조건A')

 

 


2. webdriver 설치

from selenium import webdriver
browser = webdriver.Chrome('./chromedriver.exe')    # C 는 대문자, 괄호 안에는 경로


# selenium : 브라우저를 조작하는 / 컨트롤하는 / 명령을 할 수 있는

 

3. 브라우저 열기

driver.get('http://www.economytalk.kr/news/articleView.html?idxno=219136')
html=driver.page_source

#html을 해석하기 위해서 BeautifulSoup이 필요함
from bs4 import BeautifulSoup

#무엇으로 읽을 것이냐 ? -> html.parser로 읽을 것이다!
soup=BeautifulSoup(html,'html.parser')

#태그찾기
search=soup.select('div')

 

중요★ 태그에서 필요한 값만 추출하기

soup.select('태그조건')
soup.select('태그명')
soup.select('#id속성값')
soup.select('태그명.class속성값')
soup.select('부모태그정보 > 자식태그정보')

 

 

4. url의 구조

url은 주소와 파라미터로 나뉜다

 

주소 : http://주소...x/aaaa/ssss/dddd
파라미터 : ? 뒤에 나타남

 

searching_words = ['파이썬','코로나','강의']

for word in searching_words:
    print(word)
    url = f'https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query={word}'
    print(url)

>>>

파이썬
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=파이썬
코로나
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=코로나
강의
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=강의

 

5. html 구조

더보기

1. <태그>     </태그>
2. <태그명>
    <태그명 속성1 = 값>
    <태그명 속성2 = 값, 속성2 = 값>
    
3. <태그>홍길동</태그>
4. <태그1>     #부모태그
        <태그2>  #자식태그
        <태그3>  #자손태그
        </태그3>
        </태그2>
   <태그/1>