저는 당분간 파이썬에서 웹크롤링(Web Crawling) 하는 방법을
공부하면서 정리하면서 진행해보려고 합니다.
공부를 하면서
정리를 하면서 진행하는 것이라서
틀릴 수도 있으니
이 부분은 참고 부탁드립니다.
오늘은 python에서 웹 크롤링을 하기 위해서
설정하는 방법과 제목을 가져오기 까지
해보려고 합니다.
그 전에 우선 웹 클롤링이 무엇인지부터
정리를 하고
방법과 그런 것들을
진행해보도록 하겠습니다.
1. 웹 클롤링이란?
저도 공부를 하면서 진행하는 것이기 때문에
틀릴 수는 있습니다.
아무튼 제가 이해한 범위로
쉽게 설명을 해보도록 하겠습니다.
웹 사이트에는 이미지, 텍스트, 링크 등
많은 것들이 있습니다.
이를 자동으로 수집할 수 있습니다.
이것을 웹 크롤러(Web Crawler)라고 합니다.
그리고 이를 하는 작업을
웹크롤링(Web Crawling)이라고 합니다.
2. 파이썬에서 필요 패키지 설치하기
python에서 웹 크롤링을 하기 위해서는
필요 패키지들이 있습니다.
이를 설치해주어야 합니다.
파이썬에서 사용할 때 필요한 것은
bs4와 requests 입니다.
그리고 이렇게 필요 패키지를 설치하기 위해서는
명령 프롬프트에서 작업이 필요합니다.
2-1. 명령 프롬프트 실행하기
시작 - cmd를 입력하시면
아래처럼 명령 프롬프트가 뜹니다.
위 상황에서 엔터를 쳐주시거나
명령 프롬프트를 클릭해서 실행해 주시면 되십니다.
윈도우7 이하에서도 검색을 하면 찾을 수 있고,
아니면 시작 - 실행 해서 cmd를 넣고
엔터를 쳐주셔도 되십니다.
2-2. bs4 설치
2-1에서 명령 프롬프트를 열었으면
이제 설치를 해주어야 합니다.
설치하는 것은 python 명령어라고 해야 하나?
아무튼 패키지를 설치하는 명령어인
pip를 이용합니다.
pip install bs4
위처럼 치고 엔터를 쳐주시면 되십니다.
그럼 자동으로 설치를 하게 됩니다.
위처럼 설치를 하게 됩니다.
위는 다 설치가 된 모습입니다.
2-3. requests 설치하기
이번에는 requests 설치를 해보도록 하겠습니다.
위 2-2번과 동일하게 설치를 해주시면 되십니다.
명령어에서 설치하는 패키지 명만 변경을 해주시면 되십니다.
pip install requests
위처럼 입력을 하고
엔터를 쳐서 실행을 해주시면
아래와 같이 나오게 됩니다.
위처럼 나오면서
설치를 완료하게 되는 것입니다.
3. 웹크롤링을 통해 데이터 가져오기
이번에는 웹크롤링(Web Crawling) 을 통하여
데이터를 가져와보도록 하겠습니다.
파이썬에서 웹크롤링을 하기 위하여
위 2번에서 설치한 패키지 2개를 모두 import 해주시고
사용을 합니다.
저는 아래와 같이 소스를 작성해 보았습니다.
import requests
from bs4 import BeautifulSoup
#reqeusts 라이브러리 이용 가져오기
htmls = requests.get('https://www.daum.net/')
print(htmls.text)
위처럼 작성을 하였습니다.
daum.net 사이트에서 데이터를 가져오는 소스입니다.
위 소스를 간단히 설명하면 다음과 같습니다.
requests는 해당 페이지의 html을 다운받는 것으로
생각을 하면 쉽게 이해를 하실 수 있으실 것이빈다.
그리고 get 함수를 이용하여
해당 HTML 문서에서 text 속성의 값들만
바인딩 해오는 것입니다.
그래서 화면에 출력하도록 하는 소스입니다.
위와 같이 소스를 작성하였습니다.
그리고 실행을 하면
결과는 다음과 같이 나오게 됩니다.
위처럼 나오게 됩니다.
아래쪽에 더 많은 내용이 있습니다.
전체를 다 스샷찍을 수 없어서
윗부분 일부만 찍은 것입니다.
그리고 위 소스를
아래와 같이 변경하여서도
실행할 수 있습니다.
import requests
from bs4 import BeautifulSoup
#reqeusts 라이브러리 이용 가져오기
htmls = requests.get('https://www.daum.net/')
#BeautifulSoup 이용 파싱하기
bs = BeautifulSoup(htmls.content, 'html.parser')
print(bs)
위 소스는 BeautifulSoup을 이용하여
파싱을 추가적으로 해 놓은 것으로 보시면 될 것 같습니다.
BeautifulSoup 객체는 웹 문서를 파싱한 상태로
저장을 하는 것입니다.
웹 문서를 가지고와서 태그별로 분해해서
트리형식으로 저장을 하는 것입니다.
<html>
<head>
</head>
<body>
<div ...>
</div>
</body>
</html>
위처럼 되어있는 html이 있다고 한다면
제일 상단 트리는 html로 되는 것입니다.
그리고 하단 트리로 head 와 body가 있고,
body 아래에는 div가 있게 되는
이런 트리로 생성이 되는 것입니다.
그래서 BeautifulSoup을 이용하여
파싱하여 데이터를 가져오게 할 수 있습니다.
위처럼 소스를 작성하였습니다.
그리고 실행을 하면 결과는 다음과 같이 나오게 됩니다.
약간 다른거 같기도 하지만
거의 큰 차이는 못느끼겠네요.
4. 제목(Title) 가져오기
이번에는 해당 URL에서 제목인
Title 태그의 값을 가져오는 방법을
정리해보도록 하겠습니다.
import requests
from bs4 import BeautifulSoup
#reqeusts 라이브러리 이용 가져오기
htmls = requests.get('https://www.daum.net/')
#BeautifulSoup 이용 파싱하기
bs = BeautifulSoup(htmls.content, 'html.parser')
#Title만 가져오기
title = bs.find('title')
print(title)
위처럼 소스를 작성해 보았습니다.
위 소스를 설명하면 다음과 같습니다.
파싱하기 까지는 위 3번에서 설명한 것과
동일합니다.
그리고 아래 bs.find에서 title이라는 태그를 찾습니다.
그래서 해당 부분의 값을 가져오도록 하는 것입니다.
위처럼 소스를 작성하였고
실행을 하면
결과는 다음과 같이 나오게 됩니다.
위처럼 Daum 이라는 제목을 가져오는 것을
확인할 수 있습니다.
위 방법 외에도 트리구조를 이용하여
데이터를 가져올 수도 있습니다.
이번에는 이 방법을
정리해보도록 하겠습니다.
import requests
from bs4 import BeautifulSoup
#reqeusts 라이브러리 이용 가져오기
htmls = requests.get('https://www.daum.net/')
#BeautifulSoup 이용 파싱하기
bs = BeautifulSoup(htmls.content, 'html.parser')
#Title만 가져오기
title = bs.head.title
print(title)
위처럼 소스를 작성하였습니다.
위 3번에서 제가 설명한 것처럼
BeautifulSoup은 트리구조로 데이터를 파싱하는 것입니다.
그렇기 때문에 트리구조로 해서 데이터를 가져오도록 한 것입니다.
head 안에 title 값을 가지오도록 하는 것입니다.
위처럼 소스를 작성하였고
실행을 하면 결과는 다음과 같이 나오게 됩니다.
위처럼 나와지는 것을
확인할 수 있습니다.
4번 위의 소스와 결과는 동일한 것을
확인할 수 있습니다.
오늘은 파이썬에서 웹크롤링하기 1탄을 해보았습니다.
python에서 웹 크롤러를 사용하기 위하여
패키지를 설치하고 import 하여 사용하는 것입니다.
그리고 데이터를 가지고오고
제목을 가져오는 것까지 정리해보았습니다.
오늘은 제목까지 해보았고,
다음에는 다른 내용을 가져오는 것이나
다른 것들을 해볼 예정입니다.
앞으로도 공부를 하면서 할 것이라서
틀리거나 그럴 수도 있으니
그런건 참고 부탁드립니다.
이상으로 파이썬에서
웹크롤링하기 1탄이였습니다~
소스코드 복사가 안된다면
sagittariusof85s.tistory.com/140
위 블로그 글 참고 부탁드립니다~
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
'컴퓨터관련 > Python' 카테고리의 다른 글
python에서 requests로 Get, Post API 통신하기 (1) | 2020.11.25 |
---|---|
python BeautifulSoup 이용 웹 크롤링 2탄 태그와 클래스로 데이터 가져오기 (0) | 2020.11.17 |
python에서 인자값 입력받기 (0) | 2020.10.22 |
python에서 산술연산자와 산술함수 (0) | 2020.08.06 |
python에서 txt파일 라인수 구하기 (0) | 2020.07.02 |