본문 바로가기

etc.

[Python] Wikipedia API 로 단어 추출하여 크롤링하기

반응형

https://pypi.org/project/Wikipedia-API/

 

Wikipedia-API

Python Wrapper for Wikipedia

pypi.org

 


1. 설치

cmd 창에서 Wikipedia API 라이브러리를 설치한다

> pip install wikipeda-api

 

2. 사용

다음과 같이 라이브러리를 import 해준다

 

import wikipediaapi

 

이를 사용하기 위한 객체를 생성하고, 언어를 설정해준다

 

wiki = wikipediaapi.Wikipedia('en')

 

우리가 검색하고자 하는 단어를 'WORD' 라고 할 때, 다음과 같이 데이터를 불러올 수 있다

 

page_py = wiki.page(WORD)

# 페이지 존재여부 확인 메소드: page_py.exists()
# 페이지 타이틀: page_py.title
# 페이지 내용 요약: page_py.summary[0:100]
# 페이지 내용: page_py.text
# 페이지 url: page_py.fullurl or page_py.canonicalurl
...

 

3. 적용

"What is WORD from wiki" 라는 문장을 받았을 때,

다음과 같이 정규식을 사용하여 'WORD' 를 추출할 수 있다

 

import re

sentence = "What is WORD from wiki?"
word = re.search("What is (.*) from wiki?", sentence).group(1)

print(word)
>>> 'WORD'

 

이를 통해 추출한 'WORD' 를 가지고 데이터를 불러온다

 

page_py = wiki.page(WORD)

 

가장 먼저 페이지가 존재하는지 확인 후 ? 존재한다면 그 내용을 : 아니라면 모르겠다는 답변을 return 한다

 

if page_py.exists() == True:

 

이렇게 wikipedia-api를 호출하다 사용하면 여러 특문이 설명에 그대로 출력되기 때문에

다음과 같이 정규식을 사용하여 제거한다

 

re.sub(r"[^a-zA-Z0-9]", "", WORD)

 

추가로, Wikipedia API는 동음이의어가 존재할 경우 다음과 같이 "may also refer to:" 문장과 함께 url을 제공한다

 

Trump may also refer to:

따라서 "may also refer to:" 문장을 확인 후 url을 제공하고, 알맞은 페이지를 찾았다면, 요약본을 출력하도록 작성한다

 

if "may refer to:" in page_py.summary:
    output = "There are some keywords about {}. Please check this URL! \n {}".format(WORD, page_py.fullurl)
    
else:
    summary = list(page_py.summary.split("."))
    output = re.sub(r'\([^)]*\)', "", summary[0]) + "." + summary[1] + "." + \n" + page_py.fullurl

 

반응형