ITStudy/Python

[Python] openpyxl로 excel 다루기03 (urllib, BeautifulSoup)

Todays Goal 2021. 2. 24. 08:20
728x90
반응형

이번 포스트에서는 python에서 실제 웹 상에 존재하는 데이터들을 excel로 저장하는 방법에 대해서 알아보도록 하겠습니다.

이전 포스트에서는 DART의 RSS를 활용하여 웹 상의 데이터를 읽어오는 방법에 대해서 알아보았습니다. 이번에는 엑셀로 만들어진 url주소를 활용하여 웹상에 존재하는 특정 정보를 가지고 오는 방법에 대해서 알아보도록 하겠습니다. 

 

따라서 아래의 세가지 라이브러리를 활용해보도록 하겠습니다.

01 urllib : url을 호출하고 데이터를 불러들입니다.

02 BeautifulSoup : html문서를 분석하고 파싱합니다.

03 openpyxl : 매트릭스 형태로 저장하기 위한 excel 파일을 작성합니다.

 

오늘의 예제는 KCI(Korea Citation Index; 한국학술인용색인*)에 등록되어있는 한국도서관정보학회지 데이터를 활용해보고자 합니다. 저는 이번에 받은 데이터를 이용해서 텍스트 분류학습 데이터로 추가활용할 예정입니다. 

* 한국학술지인용색인은 한국연구재단에서 운영하는 사이트로 학술지 정보, 논문 원문 등의 정보, 인용정보 등을 제공,분석하는 시스템

KCI 사이트에 접속하여 검색하시면 해당 내용을 엑셀로 반출 받을 수 있습니다(엑셀 반출 시 회원가입이 필요합니다).

 KCI 한국학술지인용색인

 

1) 엑셀 데이터의 논문ID를 확인하면 URL의 파라미터 sereArticleSearchBean.artiI의 값임을 확인할 수 있습니다.

2) 마우스 오른쪽 클릭을 하시고 검사를 수행하시면 개발자 도구(F12를 통한 접근은 막혀있습니다)를 통해 한글 초록의 <div Clss="innerBox open"><p id=korAbst></p></div> 구조를 확인할 수 있습니다. 

KCI 한국인용색인 데이터 구조

 

 

데이터 추출 및 저장

# In 1: 필요 라이브러리를 import합니다.
import urllib.request
from openpyxl import load_workbook
from bs4 import BeautifulSoup

# In 2: 
wb=load_workbook('논문검색리스트Excel.xlsx') # KCI 반출 excel 파일 load
ws=wb["논문검색리스트"] # 데이터가 들어있는 초기 sheet
ws_result=wb.create_sheet('reult') # 크롤링 결과물이 저장될 sheet
count=int(ws.max_row)+1 # for문 반복 범위
url='https://www.kci.go.kr/kciportal/ci/sereArticleSearch/ciSereArtiView.kci?sereArticleSearchBean.artiId='

# In 3: 웹 페이지 크롤링
for i in range(2,count): # 헤딩을 제외한 범위 지정
    gc=urllib.request.urlopen(url+ws.cell(i,2).value) # 파라미터값을 추가하여 url을 open합니다.
    bs=BeautifulSoup(gc,'html.parser') # bs 객체를 생성합니다. 
    tag=bs.find('p',id='korAbst') # <p id='korAbst'>...</p> 내용을 추출합니다.
    response=tag.string # 추출된 한글초록의 태그를 삭제합니다.
    ws_result.cell(row=i,column=1).value=ws.cell(i,3).value # 논문 타이틀 A칼럼에 기록합니다.
    ws_result.cell(row=i,column=2).value=response # 한글 초록 B칼럼에 기록합니다.
    
# In 4: 엑셀 데이터 저장
wb.save('논문검색리스트_result.xlsx')

openxyxl 실습결과물

 

이상 excel에 수집된 URL 데이터를 활용하여 데이터들을 수집하고 excel에 저장하는 방법에 대해 알아보았습니다. 

 

다른 개별 라이브러리에 대한 참고는 이전 포스트들을 참고해주시기 바랍니다. 감사합니다.

 

[Python] urllib로 웹 데이터 핸들링 with DART

오늘은 파이썬 라이브러리 중 웹 데이터를 핸들링 할 수 있는 urllib에 대해서 알아보고자 합니다. urllib 중 urllib.request 모듈과 urllib.parse 모듈을 사용하여 간단하게 웹 페이지에 데이터를 요청하고

todaysgoal.tistory.com

 

[Python] BeautifulSoup로 웹 데이터 분석 with DART

오늘은 웹 데이터 분석을 위해 BeautifulSoup에 대해서 간단하게 알아보도록 하겠습니다. BeautifulSoup는 HTML 및 XML 데이터 분석을 위한 Python 라이브러리입니다. 지난번에 알아본 urllib 라이브러리와 함

todaysgoal.tistory.com

 

[Python] openpyxl로 excel 다루기01 (excel 구조, sheet 및 cell)

이번 포스트에서는 python에서 excel을 다루기위해 openpyxl 라이브러리에 대해서 알아보도록 하겠습니다. 아래와 같은 내용을 알아보도록 하겠습니다. 01 excel의 구조 02 openpyxl 튜토리얼: excel 생성, sh

todaysgoal.tistory.com

728x90
반응형