반응형
파이썬 웹 페이지에서 데이터 추출하기
1. 웹 페이지에서 데이터 추출
> 정규 표현식을 이용한 스크래핑은 HTML을 단순한 문자열로 취급하여 필요한 정보 추출
> 마크업되지 않은 웹 페이지에서도 문자열의 특징을 파악하면 스크래핑 가능하다.
> XML 파서를 이용한 스크래핑은 XML 태그를 파싱하여 필요한 정보를 추출
> 블로그 또는 뉴스사이트 정보를 전달하기 위한 RSS와 같이 많은 데이터가 XML 형태로 제공
> XML 파서를 사용하면 정규 표현식보다 간단하고 효과적으로 필요한 정보 추출 가능
> HTML을 스크래핑할 때는 HTML 전용 파서가 필요
> 파이썬의 표준 모듈인 html.parser 모듈을 사용하면 HTML 파싱 가능
> lxml 등과 같은 라이브러리를 사용하여 HTML 파싱 필요
2. 정규식
> 특정 검색 패턴에 대한 하나 이상의 일치 항목을 검색하여 검색된 텍스트로부터 정보를 추출하는데 유용하게 사용가능한 표현식
> 유효성 검사에서 문자열 파싱 및 대체, 데이터를 다른 형식으로 변환 및 웹 스크래핑에 이르기까지 다양한 응용분야에서 활용
정규표현식 연습 사이트
3. RSS(Really Simple Syndication, Rich Site Summary)
> 뉴스나 블로그 등 업데이트가 빈번한 사이트에서 주로 사용하는 콘텐츠 표현 방식
> 구독자들에게 업데이트된 정보를 용이하게 제공하기 위해 XML 기반으로 정보 표현 및 제공
> RSS 서비스를 이용하면 업데이트된 정보를 찾기 위해 홈페이지를 일일이 방문하지 않아도 업데이트 될 때마다 빠르게 편리하게 확인 가능
> 브라우저에 확장 프로그램으로도 제공
import re
from html import unescape
# 이전 절에서 다운로드한 파일을 열고 html이라는 변수에 저장
# with 문을 사용하면 자동으로 close() 함수 사용
with open('dp.html', encoding='utf-8') as f:
html = f.read()
# re.findall() 메서드를 통해 도서 하나에 해당하는 HTML을 추출
for partial_html in re.findall(r'<td class="left"><a.*?</td>', html, re.DOTALL):
# 도서의 URL을 추출
url = re.search(r'<a href="(.*?)">', partial_html).group(1)
url = 'http://www.hanbit.co.kr' + url
# 태그를 제거해서 도서의 제목을 추출
title = re.sub(r'<.*?>', '', partial_html)
title = unescape(title)
print('url:', url)
print('title:', title)
print('---')
반응형
'Language > Python' 카테고리의 다른 글
파이썬 퍼머 링크 목록 추출하기 (2) | 2020.09.02 |
---|---|
파이썬 SQLite3 DBMS로 저장하기 (0) | 2020.09.01 |
파이썬 XML을 이용하여 기상청 데이터 스크래핑하기 (0) | 2020.09.01 |
파이썬 정규 표현식을 사용하기 위한 re 모듈 (0) | 2020.09.01 |
파이썬 웹페이지 추출하기 (0) | 2020.09.01 |
주피터 노트북 테마 변경 및 종류 (0) | 2020.08.31 |
주피터 노트북 단축키 정리 (0) | 2020.08.31 |
파이썬 버블정렬 Python Bubble Sort (0) | 2020.05.22 |
최근댓글