[BS4] BeautifulSoup4 크롤링 사용법 정리
2019. 12. 16. 16:22ㆍ카테고리 없음
공식 사이트 : https://www.crummy.com/software/BeautifulSoup/bs4/doc/
한글 번역 : https://www.crummy.com/software/BeautifulSoup/bs4/doc.ko/
1. 라이브러리 설치
터미널에 아래 명령어를 입력하여 라이브러리를 설치합니다.
$ pip install beautifulsoup4
2. 라이브러리 로딩 및 홈페이지 접속
설치 후 라이브러리를 불러온다. 그리고 접속하고 싶은 주소를 version_url에 넣어서, 해당 홈페이지의 내용을 불러온다.
코드 설명
- 한글은 url로 인식하지 못하기 때문에 urllib.parse.quote(value) 로 유니코드로 변환
- '웹 표준'이라는 한글이 '%EC%9B%B9%20%ED%91%9C%EC%A4%80' 식으로 변경됨
- urllib.request.urlopen(version_url) 으로 해당 사이트 로드
- BeautifulSoup(html, 'html.parser', from_encoding='utf-8')로 해당 사이트의 내용을 불러옴
from bs4 import BeautifulSoup
import urllib.request
import urllib.parse
for each_cell in cell_list:
title = urllib.parse.quote(each_cell.value)
version_url = 'http://www.incodom.kr/' + title + '?rev=list'
print("\n\n ==> version_url : ", version_url, '\n\n')
with urllib.request.urlopen(version_url) as response:
html = response.read()
soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
3. 테이블 정보 불러오기
원하는 부분을 불러온다. 여기서는 수정한 날짜와 URL 주소를 불러옴
- {'class':"caret-target"}는 class가 caret-target인 것을 불러온다는 의미
- 접속 사이트 : http://www.incodom.kr/%EC%9B%B9%20%ED%91%9C%EC%A4%80?rev=lis
time_all = soup.find_all('time')
url_all = soup.find_all('a', {'class':"caret-target"})
Body 불러오기
기본적인 body는 간단하게 불러올 수 있다.
with urllib.request.urlopen(url) as response:
html = response.read()
soup = BeautifulSoup(html, 'html.parser', from_encoding='utf-8')
body = soup.find('body')