본문 바로가기
개발/파이썬

파이썬 크롤러 만들기 #1

by 티포스터 2021. 4. 10.
728x90

파이썬으로 크롤러를 만들어보자.

 

앞서 설치한 파이참 프로그램 사용. (tposter.tistory.com/6)

 

크롤러를 만들기위해 requests와 beautifulsoup 라이브러리를 사용한다.

막 python을 설치한 상태라면, 위 모듈은 따로 설치해야 한다.

 

모듈을 설치하지 않고 사용하면, 아래 처럼 빨간색줄이 뜬다.

requests 모듈을 먼저 설치해야 한다.

파이참 프로그램 하단에 보면 Terminal이 있고 여기에 pip install '모듈명' 명령어를 입력하면 설치가 된다.

(윈도우 터미널을 사용해도 된다)

  • pip install requests
  • pip install bs4

 

그럼 이제 웹 페이지를 긁어보자.

requests.get("URL")로 해당 주소의 HTML 페이지를 읽어올 수 있다.

import requests
from bs4 import BeautifulSoup

res = requests.get("https://www.naver.com/")
print(res)
print(res.text)

soup = BeautifulSoup(res.text, "html.parser")
print(soup)

HTML 페이지를 읽어오는 데 성공했다면, print(res)의 출력 결과는 Response 200이 될 것이다.

그리고 print(res.text)는 읽은 페이지의 text 데이터를 출력해준다.

<!DOCTYPE html>

<html data-platform="pc" data-useragent="python-requests/2.25.1" lang="ko">
<head>
<meta charset="utf-8"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
...
<생략>

위 html 페이지는 우리가 원하는 데이터 외에 필요없는 많은 문자가 있다.

따라서 구분자를 이용해서 우리에게 필요한 데이터만 뽑아야 하는데, beautifulsoup을 이용하면 이를 쉽게 할 수 있다.

 

print(soup)을 보면 위에서 출력한 res.text와 내용이 동일하다고 생각할 수 있는데,

실제로는 BeautifulSoup 라이브러리로 쉽게 데이터를 추출할 수 있도록 html.parser를 적용한 것이다.

 

그럼 필요한 데이터를 추출해보자

<em class="theme_category"> 영화</em>
<strong class="title elss">남미의 뽀로로 ‘모니카’, 영남알프스에 떴다!!</strong>
<p class="desc">브라질을 대표하는 만화 캐릭터 ‘모니카와 친구들’이 영화화되다! 물리적 거리만큼이나 멀게 느껴지는 브라질, 우리에겐 브라질 하면 ‘축구’나 ‘삼바’ 정도를 떠올리실 텐데요. 하지만, 다음 사진은 어디선가 본 적 있으실지도 모르겠습니다. 브라질의 국민만화가로 통하는 마우리시우 지 소우자는 자신의 어린 딸 모니카를 모델로 해서 만화를 그리기 시작했는데요, 개구</p>
<div class="source_box">
<span class="date">2주일 전</span>

위 페이지에서 '브라질을 대표하는 만화 캐릭터 ...' 텍스트를 추출하려면?

result = soup.find('p', {'class':'desc'})
print(result)

위 soup.find를 보면 원하는 데이터를 어떻게 뽑아내는지 알 수 있다.

 

p class="desc" 에 해당되는 데이터를 모두 출력해보자.

 

import requests
from bs4 import BeautifulSoup

res = requests.get("https://www.naver.com/")
soup = BeautifulSoup(res.text, "html.parser")
result = soup.find_all('p', {'class':'desc'}) # find_all은 일치하는 모든 데이터를 찾아 return

for i in result:
    print(i)

 

위 코드를 실행하면 아래와 같은 결과가 출력된다.

<p class="desc">지난 시간, 맘스홀릭 서베이에서는자녀를 키우는 부모들이라면 한 번쯤고민하게 된다는 '훈육'에 대한설문조사를 실시했습니다.훈육의 필요성부터 훈육 시작 시기,훈육 방법 등 맘스홀릭 회원들의자녀 훈육에 대한 생각,설문 결과를 통해 확인하고 가세요! 설문 주관 : 맘스홀릭베이비설문 주제 : 우리 가정의 자녀 훈육 방법은?설문 기간 : 2021.02.18 ~ 202</p>
<p class="desc">“어머니, 오늘 수업 끝나고 결이가 좀 울었어요.” “무슨 일이 있었나요?” “아이들끼리 대전하는 날이었는데, 결이가 연달아 졌거든요. 질 수도 있다고 괜찮다고 했는데도 울더라고요.” 결이가 바둑학원에 처음 다녔을 때 있었던 일입니다. 바둑학원에 다녀오면 그날그날 배운 것, 재밌었던 것을 조잘</p>
<p class="desc">[작정해도 어렵네] 2. 일단, 아이를 낳았습니다 [알림] 시각장애인 웹 접근성 보장을 위한 대체 텍스트입니다.어느날, 산부인과 진료를 받은 후어째선지 고기가 먹고 싶었던 판다."꼭 여기 갈비탕이 먹고 싶었어요""내일 장모님이 고기 해 주신다 하셨는데….""지금 당장!"그런데 몇 시간 후 배가 묘하게 아파 왔습니다."어… 이거 혹시 진통인가?""?!"'예정</p>
<p class="desc">#1살 #육아 #어린이집 Q.복직을 해야 해서 10개월된 아기를 어린이집에 보내야 합니다. 아직 너무 어리기 때문에 걱정이 큰데, 아기를 어린이집에 보내면서 알아두면 좋을 사항이 있는지 궁금합니다.A. 아이를 처음 어린이집에 보낼 때 많은 부모님들이 걱정을 하십니다. 돌 전 아이라면 더욱 그러실 겁니다. 가장 중요한 것은 아이가 원에 잘 적응할 수 있도록 </p>
<p class="desc">​전위성 선생님의 2015년 책인데, 읽으면 읽을수록 작년에 읽은 완전학습 바이블이 떠올랐다.​이 책을 읽고 난 한 줄 소감자기주도학습 방법에 대한 자세한 설명을 담은 끝판왕목차 : 제목 속에 말하고자 하는 모든 내용이 담겨있다.​제1부. 공부를 시작하게 하는 비법 31쪽. 아이들은 마음에 하얀 종이를 한 장씩 품고 태어난다. 그 하얀 종이에 그림을 그려주</p>

 

<p class="desc"> 도 출력하기 싫다면?

print(i.text) 를 사용하면 된다.

728x90

'개발 > 파이썬' 카테고리의 다른 글

파이썬 함수 - python def  (0) 2021.06.05
파이썬 조건문 - python if문  (1) 2021.05.29
파이썬 반복문 - python while문  (0) 2021.05.16
파이썬 반복문 - python for문  (0) 2021.05.05
파이썬 설치 (with 파이참)  (0) 2021.03.31