본문 바로가기

프로그래밍/웹

웹 크롤링 환경 구축 및 예제

반응형

ி anaconda 설치


pip만을 포함하고 있는 python은 패키지를 설치할 때
컴퓨터 자체에 모두 적용되어 공간의 낭비가 심해진다.
아나콘다는 논리적으로 분리된 가상환경 안에서 패키지를 관리한다.
수학-과학 계산을 위해 여러 패키지들을 묶어 놓은 파이썬 배포판이며
패키지 버전들은 패키지 관리 시스템 conda를 이용한다.

https://www.anaconda.com/products/individual
스크롤을 맨 아래로 내려서 anaconda 설치 파일을 다운받는다.



ி 웹 크롤러 모듈 설치


아나콘다 프롬프트를 관리자 권한으로 실행하여
Text Minning 구성을 위한 모듈을 설치한다.
conda install selenium(관리자 모드에서 실행)
conda install BeautifulSoup
conda install openpyxl(엑셀 저장을 원하는 경우 설치, 이 포스팅에선 언급하지 않음.)
chrome://settings/help에 들어가서 크롬 버전 정보를 확인한다.
https://chromedriver.chromium.org/downloads에서
설치된 환경에 맞는 버전을 다운받고 jupyter notebook 경로에 옮긴다.



ி 웹 크롤링


jupyter Notebook으로 웹 환경에서 파이썬을 실행할 수 있다.




티스토리 블로그의 게시글 제목을 출력하는 코드를 만든다.

개발자도구에서 요소 선택을 하고 게시물에 갖다댄다. 

post-item이 게시물인 것을 확인했고 게시물 전체를 아우르는 태그는 inner이다.

해당 태그 요소를 COPY selector하면 #content > div.inner로 복사된다.

div.inner 밑에 div 태그를 가진 post-item 전체를 가져와야 한다. 

이는 #content > div.inner > div로 작성한다.


이제 제목을 가져와야한다. 

post-item 하위에 span 태그, title 클래스가 게시글 제목인 것을 확인했다.   


이를 토대로 크롤링 코드를 작성한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import selenium
from selenium import webdriver
from bs4 import BeautifulSoup
 
driver = webdriver.Chrome("./chromedriver")
driver.get("http://rok0188.tistory.com/category")
 
soup = BeautifulSoup(driver.page_source, 'html.parser')
 
 
 
result_list = []
for i in soup.select("#content > div.inner > div"):
    print(i.find("span", class_="title"))
    
    result_list.append(i.find("div", class_="post-item"))
cs


chromedriver.exe를 실행하여 블로그의 html 소스를 모두 가져와 soup에 저장한다. 

이후 soup에서 게시글 제목 데이터만 뽑아서 화면에 출력한다.





10페이지까지 게시글 제목을 추출하는 방법이다.

반복문을 통해 다음 페이지를 가리키도록 page 인수 뒤에 변수를 지정한다.












반응형

'프로그래밍 > ' 카테고리의 다른 글

jsp 개념 및 문법정리  (1) 2020.11.15
이클립스 설치 및 톰캣 연동  (1) 2020.11.14
textarea 크기 자동 조절  (0) 2020.07.12
PHP 자주쓰는 함수 모음  (0) 2019.12.27
자바스크립트 이미지 캡처하기  (0) 2019.12.13