다양한 포멧 데이터 수집 - 다양한 데이터 읽기 - PDF/워드(docx) 파일

4. 다양한 데이터 읽기 - PDF/워드(docx) 파일

4.1. 다양한 데이터 읽기 - PDF 파일

  • 웹 또는 데이터 중 PDF 로 되어 있는 파일에서 데이터 추출하기
    • pdfminer3k 라이브러리 활용
      • 파이썬3 용 pdfminer 라이브러리
    • 설치
      • pip install pdfminer3k

  • 텍스트가 주로인 PDF 파일에서는 텍스트 파일을 읽을 때와 큰 차이 없이 텍스트 데이터 추출 가능
from pdfminer.pdfinterp import PDFResourceManager, process_pdf
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from io import StringIO
from io import open
from urllib.request import urlopen

# 다음 코드는 라이브러리에서 PDF 파일을 읽을 시 사용하는 전형적인 코드 형태이므로, 필요할 때 활용하면 됨
def read_pdf_file(pdfFile):
    rsrcmgr = PDFResourceManager()
    retstr = StringIO()
    laparams = LAParams()
    device = TextConverter(rsrcmgr, retstr, laparams=laparams)

    process_pdf(rsrcmgr, device, pdfFile)
    device.close()

    content = retstr.getvalue()
    retstr.close()
    return content

# pdf_file = urlopen("http://pythonscraping.com/pages/warandpeace/chapter1.pdf")  # 웹에 있는 pdf 파일을 읽을 수 있음
pdf_file = open("03_data/sample.pdf", "rb")                                       # 로컬 PC에 있는 pdf 파일도 읽을 수 있음
contents = read_pdf_file(pdf_file)
print(contents)
pdf_file.close()
퇴사학교–넓고 얕은 IT코딩스쿨 by 잔재미코딩 (본 자료는 다양한 인터넷 자료를 요약, 정리한 자료입니다.) 

PHP 출력문 기본 형태

sample.php 소스가 웹부라우저 화면에 출력되기까지의 과정을 살펴보자.
이것은 html 태그 내에 php 코드가 어떤 식으로 삽입되는지를 보여 주기 위한 예이다.

위 예에서 sample.php 원본소스 코드를 살펴보면 아래와  같은 일정한 규칙을 찾을 수 있다.
- // 으로 시작되는 라인은 주석문으로 출력에 아무 영향을 주지 않는다.
- $text 와 같이 $ 로 시작되는 단어는 어떤 값을 저장하는 '변수' 이다.
- php 코드는 <? 와 ?> 사이에 들어간다.
- <?= $abcd ?> 는 $abcd 변수에 저장된 내용을 출력하라는 의미이다.
- <? echo $abcd ?> 도 $abcd  변수에 저장된 내용을 출력하라는 의미이다.

변수

어떤 기능이 내장된 명령어 또는 기능구현을 위한 코드 블록(function)을 의미한다.
내장함수: php 모듈로 자체 내장되어 있는 함수이다.

strlen 라는 내장 함수의 속성에 의해 $string 변수의 문자열 길이가 계산되어 출력된 예이다.

function 함수: 사용자에 의해 작성된 함수이다.

plus_plus 라는 function 함수에 의해 +2 가 계산된 값을 출력한 예이다.

퇴사학교–넓고 얕은 IT코딩스쿨 by 잔재미코딩 (본 자료는 다양한 인터넷 자료를 요약, 정리한 자료입니다.) 

조건문 기본 문법 (예)

반복문 기본 문법 (예)

조건문과 반복문 예
if($strin == 'abcd') echo 'ok'; 만약, $strin 변수의 값이 'abcd' 이면 'ok' 라고 출력하라.
for($i=1; $i<=10; $i++) {
  echo 'ok';
}
$i 변수 값이 10 이 될 때 까지 1씩 증가하면서 'ok' 를 반복 출력하라.

include 문

HTML 또는 PHP 파일에서 다른 PHP 파일을 불러와서 사용할 수 있도록 include 문을 제공한다.
아래는 main.php 에서 sub.php 를 include 문으로 삽입하여 출력되는 과정이다.

PHP 활용 형태 (HTML Form 태그와 연동하여 활용하는 경우가 많음)

html 의 Form 양식에서 입력한 데이타가 php 파일에서 변수로 생성되는 과정을 살펴보자.

퇴사학교–넓고 얕은 IT코딩스쿨 by 잔재미코딩 (본 자료는 다양한 인터넷 자료를 요약, 정리한 자료입니다.) 

위와 같이 폼문서(html) 내의 입력필드 name 값이 php 파일에선 변수명이 되어 생성된다. 또
$_POST['myname'] , $_POST['mynick'] , $_POST['mymail'] 형태의 배열변수로도 동시 생성된
다.

PHP와 MySQL 연동 주요 코드

※ 다음 코드는 일반적인 PHP+MySQL 코드이므로, 필요시 필요한 부분만 수정해서 활용하시면 좋
습니다.



4.2. 다양한 데이터 읽기 - docx 파일

  • 웹 또는 데이터 중 MS WORD 파일인 docx 형식으로 되어 있는 파일에서 데이터 추출하기
    • docx2txt 라이브러리 활용
    • 설치
      • pip install docx2txt
import docx2txt

text = docx2txt.process("03_data/sample.docx")
print(text)
퇴사학교

넓고 얕은 IT코딩스쿨



프로토콜(protocol)

통신을 원하는 두 컴퓨터 간에 무엇을, 어떻게, 언제 통신할 것인가를 서로 약속한 규약을 말합니다. 컴퓨터 프로그램은 약속한 규약대로 비트(0과 1)을 해석해서 정보를 송수신 합니다. 프로토콜은 간단히 비트를 송수신하기 위한 약속이기 때문에 다양한 프로토콜이 존재합니다. 이 중에서 알아두면 좋을 프로토콜은 TCP 프로토콜과 IP 프로토콜 입니다. 인터넷은 TCP 프로토콜과 IP 프로토콜을 둘 다 사용하기 때문에 TCP/IP 프로토콜고도 많이 불리웁니다.

 

TCP/IP 프로토콜

TCP는 컴퓨터 간에 정보를 유실되지 않고 보낼 수 있도록 만든 프로토콜입니다.

IP는 수많은 컴퓨터 중에 특정한 컴퓨터와 통신을 할 수 있도록 만든 프로토콜입니다.

 

우체국과 비교하면, IP는 주소를 찾는 프로토콜이고, TCP는 실제로 우편물이 정확히 전달될 수 있도록 하는 프로토콜로 이해하시면 됩니다. 컴퓨터 프로토콜은 개별적인 프로토콜이 단독으로 작동하기 보다, 계층으로 나누어 각 프로토콜이 일부 역할을 하는 방식으로 구성이 되어 있습니다. 우리가 주로 쓰는 인터넷에서 사용되는 주요 프로토콜과 그 계층은 다음과 같습니다.

 



 

위 프로토콜 계층을 사용해서 실제로 웹브라우저를 킨 상태에서 일어나는 컴퓨터 내부 동작은 다음과 같습니다.

사용자는 Mozilla 나 IE 같은 브라우저를 사용하여서 www.joinc.co.kr 같은 URL 입력을 통해서 웹페이지를 요청한다.

사용자 요청은 인터넷상에서 전달되기 용이한 비트 묶음(패킷)으로 만들기 위해 TCP 프로토콜로 비트묶음(패킷)을 만든다.

이것은 다시 인터넷 상에서 원하는 주소로 이동할수 있도록 하기 위해서 IP 패킷으로 다시 만들어 지고 (IP 패킷에는 자신의 주소와, 도착해야될 상대방의 주소정보가 들어있을것이다), 이더넷 카드(랜카드)로 보내어져서 Internet 으로 나가게 된다.

 


Internet

컴퓨터로 연결하여 TCP/IP(Transmission Control Protocol/Internet Protocol)라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크를 말합니다.

 

Web (World Wide Web, WWW, W3)

웹은 전자 메일과 같이 인터넷 상에서 동작하는 하나의 서비스이며, 기본적인 구조와 동작 방식은 다음과 같습니다.