반응형

안녕하세요, 츄르 사려고 코딩하는 집사! 코집사입니다.


파이썬 웹 페이지에서 데이터 추출하기


1. 웹 페이지에서 데이터 추출

> 정규 표현식을 이용한 스크래핑은 HTML을 단순한 문자열로 취급하여 필요한 정보 추출

> 마크업되지 않은 웹 페이지에서도 문자열의 특징을 파악하면 스크래핑 가능하다.

> XML 파서를 이용한 스크래핑은 XML 태그를 파싱하여 필요한 정보를 추출

> 블로그 또는 뉴스사이트 정보를 전달하기 위한 RSS와 같이 많은 데이터가 XML 형태로 제공

> XML 파서를 사용하면 정규 표현식보다 간단하고 효과적으로 필요한 정보 추출 가능

> HTML을 스크래핑할 때는 HTML 전용 파서가 필요

> 파이썬의 표준 모듈인 html.parser 모듈을 사용하면 HTML 파싱 가능

> lxml 등과 같은 라이브러리를 사용하여 HTML 파싱 필요

2. 정규식

> 특정 검색 패턴에 대한 하나 이상의 일치 항목을 검색하여 검색된 텍스트로부터 정보를 추출하는데 유용하게 사용가능한 표현식

> 유효성 검사에서 문자열 파싱 및 대체, 데이터를 다른 형식으로 변환 및 웹 스크래핑에 이르기까지 다양한 응용분야에서 활용

 

정규표현식 연습 사이트

regex101.com/r/cO8lqs/2

 

Online regex tester and debugger: PHP, PCRE, Python, Golang and JavaScript

Please wait while the app is loading...

regex101.com

 

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('---')

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기