스크래핑(scraping)
- 컴퓨터 프로그램이 다른 프로그램으로부터 들어오는 인간이 읽을 수 있는 출력으로부터 데이터를 추출하는 기법이다.
BeautifulSoup
- 데이터를 추출하는데 필요한 기능이 들어 있는 라이브러리, 파싱(parsing)라이브러리 라고도 한다.
- 파싱은 받아온 데이터에서 필요한 내용만 추출하는 것을 의미한다.
from bs4 import BeautifulSoup
예제 1) html = """ <html> <body> <h1> 동해물과 백두산이 </h1> <p> 마르고 닳도록 </p> <p> 하느님이 보우하사 </p> <p> 우리나라만세 </p> </body> </html>""" |
|
# BeautifulSoup 객체 생성 soup = BeautifulSoup(html, "html.parser") |
|
# BeautifulSoup 객체의 html -> body -> h1 태그 출력 h1 = soup.html.body.h1 |
|
# h1 태그의 문자열만 뽑아내기 h1.string |
|
# BeautifulSoup 객체의 html -> body -> p 태그의 문자열만 출력 (첫번째 문장) p1 = soup.html.body.p |
|
# p1의 다음 문자열 출력 p2 = p1.next_sibling.next_sibling |
|
# for문을 사용하여 p태그 문자열 전부 출력하기 for i in soup.find_all('p'): for i in soup.find_all('p'): |
|
# body태그를 찾아서 뽑아내기 soup.find('body') |
|
# 단일 문장을 뽑는 방법 soup.find('body').string |
오류는 나지 않지만 값이 안나옴 |
# 여러 문장을 뽑는방법 ① soup.find('body').get_text() |
|
# 여러 문장을 뽑는방법 ① soup.find('body').get_text(strip=True) |
|
# 여러 문장을 뽑는방법 ② for i in soup.find('body'): |
|
# 여러 문장을 뽑는방법 ③ for i in soup.find_all('body'): for i in soup.findAll('body'): |
예제2 html = """ <html> <body> <hi id = 'title'> hello </h1> <p id = 'subtitle'> 안녕하세요 </p> <p> 인사를 잘하자 </p> </body> </html>""" |
|
# id값으로 문자열 뽑기 soup = BeautifulSoup(html, "html.parser") |
|
# id값으로 문자열 뽑기 soup = BeautifulSoup(html, "html.parser") |
예제3 html = """ <html> <body> <ul> <li><a href = "https://www.google.co.kr/"> 구글 </a></li> <li><a href = "http://truman.tistory.com/"> 해피밀 블로그 </a></li> </ul> </body> </html>""" |
|
# attrs : 속성값 모두 출력 soup = BeautifulSoup(html, "html.parser") |
|
# 속성값 중 'href' 값 출력 a['href'] |
|
# a태그의 'href' 값과 문장 모두 출력 for i in soup.find_all('a'): |
'컴퓨터 > 파이썬' 카테고리의 다른 글
파이썬(Python) - 예외사항 처리 (0) | 2020.03.30 |
---|---|
파이썬(Python) - 스크래핑 ② 웹 스크래핑/크롤링 연습, wordcloud사용 (0) | 2020.03.25 |
파이썬(Python) - 정규표현식과 메타문자 (0) | 2020.03.24 |
파이썬(Python) - matplotlib ③ 상자 그림 / 줄기잎 그림 (0) | 2020.03.24 |
파이썬(Python) - matplotlib ② histogram (0) | 2020.03.23 |