파이썬으로 크롤러를 만들어보자.
앞서 설치한 파이참 프로그램 사용. (tposter.tistory.com/6)
크롤러를 만들기위해 requests와 beautifulsoup 라이브러리를 사용한다.
막 python을 설치한 상태라면, 위 모듈은 따로 설치해야 한다.
모듈을 설치하지 않고 사용하면, 아래 처럼 빨간색줄이 뜬다.
파이참 프로그램 하단에 보면 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) 를 사용하면 된다.
'개발 > 파이썬' 카테고리의 다른 글
파이썬 함수 - 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 |