Python 웹 사이트 api를 만들 수 있는 toapi 라이브러리 알아보기

오늘은 Python에서 웹 페이지의 선택자 경로를 통해 가져오는 문자와 링크로 웹 사이트 api를 만들 수 있는 toapi 라이브러리를 알아보려 합니다.

toapi 설치

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

pip3 install virtualenv
virtualenv -mvenv env

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

source env/bin/activate

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

pip3 install --upgrade pip

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

pip install toapi

pip로 toapi를 설치합니다.

pip install cssselect

추가로 cssselect도 설치합니다.

블로그 api 만들기 예제

<article class="post">

    <h1><a href="/automatic-summarization-of-text-documents-sumy/">Python 자동 summarization sumy 라이브러리 알아보기</a></h1>

    <div class="entry">
    <p>오늘은 Python에서 자동으로 summarization 작업을 해줘서 텍스트와 html 코드를 요약하는 sumy 라이브러리를 알아보려 합니다.</p>
    </div>

    <a href="/automatic-summarization-of-text-documents-sumy/" class="read-more">Read More</a>
</article>

지금 보고 계시는 블로그의 메인 페이지에서 각 포스트마다 위 구조로 이루어져 있습니다.

해당 구조를 이용하여 웹 api를 만들어보려 합니다.

from htmlparsing import Attr, Text
from toapi import Api, Item

htmlparsing과 toapi를 가져옵니다.

api = Api()

Api 객체를 만듭니다.

@api.site('https://minwook-shin.github.io')
@api.list('.post')
@api.route('/api', '/')

데코레이터로 사이트의 주소와 가져올 리스트의 선택자, 그리고 라우터를 설정합니다.

class Post(Item):
    url = Attr('.read-more', 'href')
    title = Text('h1 > a')

반환할 항목을 선택자와 속성으로 지정합니다.

위와 같이 지정하면

{
    "title": "How to solve the Codewars's Regex validate PIN code", 
    "url": "/how-to-solve-regex-validate-pin-code/"
}, 

위와 같이 출력됩니다.

api.run(debug=True, host='0.0.0.0', port=5000)

이전에 만든 Api 객체를 가지고 서버를 구동합니다.

Written on July 24, 2019