웹페이지 PDF 변환 파이썬 자동화 3가지만 알면된다?
웹서핑을 하다보면 이 페이지는 저장해두고 싶다란 생각을 있으시죠? 그럴 때 어떻게 한다? ‘웹페이지 PDF파일로 바꿀 순 없나요? 포스트 보세요’ 라고만 하면 IT Playground의 테리가 아니죠! webtopdf.com 만 알면 아무나 다 하는 쉬운 일을 넘어 파이썬 자동화 프로그래밍이라는 더 깊은 세계로 들어가 보겠습니다.
시작하기
사실 프로그래밍, 코딩 등 이런 말만 들어도 알러지 반응 을 일으키시는 분이 많으시죠? 사실 이제 소스코드는 AI서비스가 다 해주기 때문에 우리는 그것을 가지고 어떻게 실행시키는지만 아시면 됩니다. 가장 중요한 것은 어떤 일을 자동화할 것인가 하는 아이디어인거 같습니다.
사실 앨런, 리튼, Claude 3 등과 같은 AI서비스를 이용하더라도 쉬운 코딩이 아니고서는 아직까지는 몇번 왔다갔다 해야 합니다. AI가 생성해주는 코드를 VS Code같은 프로그램으로 돌리더라도 원하는 기능을 한번에 성공하는 경우는 10~20% 정도라고 생각합니다.
서론이 너무 길었군요. 자 그럼 시작해 보시죠.
파이썬 자동화 코드소스
# 파이썬 자동화 코드소스
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
# URL 목록 (필요에 따라서 원하는 만큼 목록 생성하기)
urls = ["https://namu.wiki/w/Python?from=%ED%8C%8C%EC%9D%B4%EC%8D%AC", "https://namu.wiki/w/Visual%20Studio%20Code?from=VS%20Code"]
# 각 URL에 대해 반복
for url in urls:
# Chrome 드라이버 설정
driver = webdriver.Chrome()
# webtopdf.com 페이지 열기
driver.get("https://webtopdf.com/")
# 페이지가 로드될 때까지 기다리기
time.sleep(1)
# 검색 상자 찾기 및 URL 입력
search_box = driver.find_element("name", "textfield")
search_box.clear()
search_box.send_keys(url)
# 변환 버튼 클릭
convert_button = driver.find_element("id", "btnConvert")
convert_button.click()
# 변환이 완료될 때까지 기다리기 (필요에 따라 시간(초) 조절)
time.sleep(30)
# 다운로드 버튼 클릭
download_button = driver.find_element("css selector", ".downfile_over")
download_button.click()
# pdf파일이 다운로드 완료될 때까지 기다리기 (필요에 따라 시간(초) 조절)
time.sleep(30)
# 브라우저 닫기
driver.quit()
결과부터 보고 시작하겠습니다. 정말 프롬프팅을 잘해서 내가 원하는 것을 얻어낼 수 있는 사람이라면 모르겠지만 대다수의 사람들은 이게 말처럼 쉽지가 않습니다. 그래서 일단 제가 최종적으로 얻어낸 완성된 소스코드를 가지고 실행해 보겠습니다.
그리고 더 깊이있는 공부가 필요하시면 계속해서 이 포스트를 학습해보시기를 바랍니다.(생각보다 재미가 있어요. 저도 코딩하면 예전에는 고개를 절래절래 했었는데 요즘은 AI 때문에 희열?을 느끼고 있습니다. 코딩+AI, 아드레날린 분비에 특효약입니다.)
소스코드 복붙하고 실행하기
일단 위 소스코드를 복사해서 아래 그림과 같이 VS Code에 붙혀넣기 합니다. 혹시 VS Code가 깔려있지 않으신 분은 VS CODE 설치 – 윈도우 기준 포스트를 보시기 바랍니다. 소스코드의 6번째 줄에 보면 URL 목록이 있습니다. 원하는 웹사이트 주소를 복사해서 “웹사이트 주소1”, “웹사이트 주소2”, … 이런 식으로 타이핑 해주시면 됩니다. 그리고 상단 우측 마법의 버튼(실행버튼 ▷)을 클릭해줍니다.
그러면 마법같이 컴퓨터가 자기 혼자 알아서 크롬 웹브라우저를 실행시킵니다. 그리고 ‘웹to피디엪.com’에 접속해서 저장하고 싶은 웹사이트 주소를 입력하고 그 페이지를 pdf파일로 다운로드 합니다. 나중에 포스팅 하겠지만 ‘url 목록’ 삽입조차 타이핑 하면 정말 대단한 일이 됩니다.
참고로, 이 소스코드에 있는 URL 목록은 나무위키에서 소개하고 있는 페이지입니다. 파이썬과 VS Code에 대한 내용을 각각 담고 있습니다. 만약 PDF로 잘 변환이 되었다면 한번 정도는 읽어보실 만한 내용입니다.
고려해야 할 사항
이 와중에 ‘웹사이트 주소 타이핑‘과 함께 ‘웹to피디엪.com’이 웹사이트를 pdf 파일로 ‘변환하는 시간‘과 변환된 pdf 파일을 ‘다운로드 하는 시간‘ 설정만 고려하면 됩니다. 이 시간들은 webpage를 구성하고 있는 텍스트, 그림 등에 따라서 달라지는데, 왠만하면 두가지 모두 30초 정도면 문제가 없었던거 같습니다.(경우에 따라선 다운로드에 40초 이상 소요되는 경우도 있었습니다. 구축 아파트에 깔린 통신선 때문에…)
정리하기
본의 아니게 webtopdf 서비스 광고가 되어버렸는데 무료로 무제한 서비스를 제공하니까 이 정도 서비스는 해줘야 자기네들도 먹고 살겠죠? pdf변환 횟수 제한 사이트들도 많거든요. 각설하고. 이번 포스트에서는 파이썬 소스코드를 복붙해서 실행하면 자동으로 webpage를 pdf파일로 만드는 자동화 시스템을 만들어 보았습니다. 조만간 이 글의 부록형식 혹은 새로운 포스트로 상기의 프로세스 원리에 대해 말씀 드려보겠습니다.
오늘은 조금 심도있지만 실제 실행은 어렵지 않은 이야기를 해보았습니다. IT 지식이 늘어나서 우리의 삶이 풍요로워지는 그날이 될 때까지 Life2.0: IT Playground 테리는 계속 달리겠습니다.
감사합니다.
부록. 소스코드 읽어주는 AI
아래의 소스코드와 코멘트는 생성형 AI에세 해석을 해달라고 해본 결과입니다. 이 포스트를 보시는 분들도 한번 위 소스코드를 복붙해서 해석해달라고 한번 해보세요. 다짜고짜 해석해달라고 하는거 보다 ‘넌 이제 파이썬 전문가야.’하고 먼저 역할을 부여하고 해보세요. 단계단계 하면서 모르는건 더 세부적으로 설명을 요청해보세요. 몇단계만 해보면 50% 정도 이상은 이해가 가능하실 거예요.
##### Claude.ai 협찬
이 코드는 웹 자동화를 통해 주어진 URL 목록에서 웹페이지를 PDF 파일로 다운로드하는 기능을 수행합니다. 아래에 단계별로 코드를 설명하겠습니다.
# 필요한 라이브러리 및 모듈 임포트
from selenium import webdriver # 웹 브라우저 자동화를 위한 Selenium 라이브러리
from selenium.webdriver.common.keys import Keys # 키보드 입력을 자동화하기 위한 Keys 모듈
import time # 시간 지연을 위한 time 모듈
# URL 목록 선언 및 초기화
# 목록에 PDF로 변환하고자 하는 웹페이지 URL을 추가할 수 있음
urls = ["https://namu.wiki/w/Python?from=%ED%8C%8C%EC%9D%B4%EC%8D%AC",
"https://namu.wiki/w/Visual%20Studio%20Code?from=VS%20Code"]
# 각 URL에 대해 반복 처리
for url in urls:
# Chrome 웹 드라이버 실행
driver = webdriver.Chrome()
# webtopdf.com 페이지 열기
driver.get("https://webtopdf.com/")
# 페이지가 완전히 로드될 때까지 1초 대기
time.sleep(1)
# #1 웹페이지의 URL 입력 상자 찾기 및 URL 입력
search_box = driver.find_element("name", "textfield")
search_box.clear() # 입력상자 초기화
search_box.send_keys(url) # URL 입력
# #2 변환 버튼 클릭
convert_button = driver.find_element("id", "btnConvert")
convert_button.click()
# #3 변환 작업이 완료될 때까지 30초 대기
time.sleep(30)
# #4 다운로드 버튼 클릭
download_button = driver.find_element("css selector", ".downfile_over")
download_button.click()
# #5 PDF 파일 다운로드가 완료될 때까지 30초 대기
time.sleep(30)
# #6 Chrome 드라이버 종료
driver.quit()
단계별 설명
- 웹페이지의 URL 입력 상자를 찾아 주어진 URL을 입력합니다.
- 변환 버튼을 클릭하여 웹페이지를 PDF 파일로 변환을 시작합니다.
- PDF 변환 작업이 완료될 때까지 30초간 대기합니다.
- 변환이 완료되면 다운로드 버튼을 클릭하여 PDF 파일 다운로드를 시작합니다.
- PDF 파일 다운로드가 완료될 때까지 30초간 대기합니다.
- 모든 작업이 완료되면 Chrome 드라이버를 종료합니다.
이 코드는 반복문을 통해 URLs 목록에 있는 모든 웹페이지를 PDF 파일로 변환하고 다운로드합니다. 실행 시간은 웹페이지의 크기와 인터넷 속도에 따라 달라질 수 있습니다. 초보자도 이해할 수 있도록 각 단계별로 자세히 설명했습니다.
‘secondlife.lol’의 모든 콘텐츠는 저작권법의 보호를 받습니다. 무단 전재와 복사, 배포 등을 금합니다.