본문 바로가기
Python

[파이썬] HTML PDF 텍스트 추출 및 변환, 크롬 웹페이지 PDF 변환

by 퍼포먼스마케팅코더 2022. 8. 2.
반응형

오늘의 마지막입니다. 이거는 많이 유용할 것 같기는 해요. 보면 한 두 가지인데 첫 번째는 pdf 내에서 텍스트를 뽑아오는 겁니다. 그런 프로그램이 있어요. 저도 이거 설치를 해봐서 봤는데 꽤 괜찮더라고요?

 

파이썬 PDF 텍스트 추출 및 변환

티카라는 그런 것 중에 한데 이게 한 번만 실행만 하면 이거 텍스트가 금방 뽑힙니다.몇 몇까지 테스트를 해봤는데 좋더라고요 이거 한 가지를 넣었었고 추천드립니다 해서 밑에 pdf 파일 경로만 집어넣으면 바로 됩니다. 거의 뭐 정도로 빠르게 되고 텍스트를 pdf 어떤 파일이든 안에서 한글 파일은 뭔가 뽑고 싶다라는 게 있으면 이거 이거 추천드립니다. 

import warnings
from PyPDF2 import PdfFileReader, PdfFileWriter
from tika import parser

warnings.filterwarnings('ignore')

pdf_path = 'C:/Users/user/Desktop/wmt_guide_ps_quality.pdf'

parsed = parser.from_file(pdf_path)

content = parsed['content'] #컨텐츠만

print(content) #결과보기

 

파이썬 HTML PDF 파일 변환

두 번째는 html 같은 경우 그거를 pdf 파일로 뭔가 변환을 해서 가지고 싶으신 분들이 계실 거예요. 그걸 활용할 때 많이 씁니다. 두 번째 거는 저는 개인적으로는 실행 속도를 비교를 해봤었을 때 시간이 걸리긴 하더라고요 이게 htm의 웹사이트 페이지 로딩에 따라서 조금씩은 다릅니다. 오래 걸리는 것도 있고 오래 안 걸리는 것들도 있어요. 오래 걸리는 것은 여기는 삼가하는 게 있겠네요. 근데 속도 케바케로 사용을 해보시면 될 것 같아요. 

 

근데 이게 이거 사용하실 때는 설치를 한번 해야 됩니다. 밑에 보이시면 아시겠지만 파일 하나를 설치를 해야 되거든요. 근데 이게 오픈 소스예요. 오픈 소스라서 설치만 해놓고 그것만 이용을 하면 되는 거기 때문에 맞아 크나 큰 무리는 없습니다. 거의 지금 웬만한 웹사이트 몇 개 테스트는 해봤었었는데 pdf 파일로 잘 만들어지는 것 같고요 근데 다만 한계가 있는 거 그런 것도 어쩔 수 없죠. 그거는 감안을 하고 가야 되는 거죠. 여튼 유용합니다.

from PyPDF2 import PdfFileReader, PdfFileWriter
from tika import parser
import pdfkit

options = {'quiet' : ''}

config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')

pdfkit.from_url('https://naver.com', 'C:/Users/user/raw/sample1.pdf', options=options, configuration=config)

print("완료")

 

파이썬 크롬 브라우저 웹페이지 PDF 변환

저는 맨 마지막 거에도 추천드리는데 맨 마지막 거는 구글 크롬 브라우저 있지 않습니까 셀레니움이라고 하죠. 셀레니움을 이용을 해서 하면 이게 빠릅니다. 저는 가장 밑에 거를 추천드려요. 실제로 제 거를 제 거 url을 가지고 테스트를 해봤었는데 꽤 괜찮습니다. 이게 뭐냐면 크롬 브라우저 있지 않습니까 이게 업그레이드 됐어요. 이게 4.0인가 그걸로 업그레이드 돼가지고 그걸로 사용을 해봤더니 크롬에서 인쇄 버튼 누르지 않습니까 인쇄 버튼 눌러서 pdf로 설정을 눌러서 인쇄 마지막으로 누르면 그게 웹 html이 pdf 파일로 저장이 되는 기능이거든요. 근데 이걸 일일이 마우스로 클릭을 해서 다운을 받자니 이게 시간도 오래 걸리고 그러다 보니까 그거를 미연에 줄여보자 라고 해서 만들어 놓은 게 바로 이겁니다. 근데 제가 개인적으로 개인적으로 봤을 때는 유용해요. 유용하고 가장 좋은 거는 맨 밑에 것을 추천드립니다.

from selenium import webdriver
import json
import time

warnings.filterwarnings('ignore')

chrome_options = webdriver.ChromeOptions()
settings = {
       "recentDestinations": [{
            "id": "Save as PDF",
            "origin": "local",
            "account": "",
        }],
        "selectedDestinationId": "Save as PDF",
        "version": 2
    }
prefs = {'printing.print_preview_sticky_settings.appState': json.dumps(settings)}
chrome_options.add_experimental_option('prefs', prefs)
chrome_options.add_argument('--kiosk-printing')
CHROMEDRIVER_PATH = "C:/Users/user/raw/chromedriver.exe"
driver = webdriver.Chrome(chrome_options=chrome_options, executable_path=CHROMEDRIVER_PATH)
driver.maximize_window()
time.sleep(1)
driver.get("https://dataanalytics.tistory.com/m/10")
time.sleep(5)
driver.execute_script('window.print();')

driver.close()
driver.quit()

이게 웬만한 url 이런 걸 다 테스트를 해봐도 이게 다 정상적으로 나오거든요. 안 나오는 경우도 있습니다. 특히나 네이버 거는 안 나오던데 박해요. 위에 것이 안 되면 아래 것을 쓰고 아래 게 안 되면 위에 것 쓰고 병행을 하면서 쓸 수밖에 없습니다 해서 코딩이 길어질 것 같기는 한데 그래도 저는 웬만해서는 밑에 거 밑에 크롬 브라우저 있잖아요. 크롬 브라우저에서 나오는 기능을 사용하시는 게 가장 좋지 않을까라고 아 생각됩니다.

반응형

댓글