Python readability 도구로 사용하는 python-readability 라이브러리 알아보기

오늘은 Python에서 arc90의 readability 도구로 사용할 수 있는 python-readability 라이브러리를 알아보려 합니다.

python-readability 설치

우선 virtualenv로 파이썬 환경을 분리해줍니다.

pip3 install virtualenv
virtualenv -mvenv env

env라는 이름의 가상 환경을 생성합니다.

source env/bin/activate

가상환경을 폴더에서 활성화합니다.

pip3 install --upgrade pip

pip의 업그레이드가 존재하는지 확인하고 진행합니다.

pip install readability-lxml

pip로 python-readability를 설치합니다.

hello world 예제

hello world라는 문장을 위키피디아로 검색한 문서를 python-readability로 제목과 본문을 출력해보았습니다.

import urllib.request
from readability import Document

해당 라이브러리에서 없는 기능인 웹에서 가져오는 urllib의 request와 readability를 가져옵니다.

req = urllib.request.Request(
    'https://en.wikipedia.org/wiki/%22Hello,_World!%22_program',
    headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15'
    }
)

wikipedia에 있는 Hello,_World!_program 프로그램에 대해 가져오기 위해 url과 헤더에 User-Agent를 설정합니다.

with urllib.request.urlopen(req) as f:
    urllib_content = f.read()

해당 Request를 비탕으로 웹 컨텐츠를 가져옵니다.

print(urllib_content.decode("utf-8"))

해당 상태는 자바스크립트 코드와 같은 문자열이 포함되어 있어서 가독성이 안좋습니다.

doc = Document(urllib_content)

Document 객체를 만듭니다.

print(doc.short_title())
print(doc.title())

아래와 같이 제목을 추출할 수 있습니다.

“Hello, World!” program “Hello, World!” program - Wikipedia

short_title과 title이 출력됩니다.

print(doc.summary())

summary로 가독성 좋게 필요없는 태그는 없어지고, 읽을 수 있는 문자열의 html 태그만 남습니다.

Written on July 22, 2019