in 포스트

애드몹 지불 영수증 자동 다운로드

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
import pdfkit
# 작년의 모든 애드몹 수입 지불 영수증을 자동으로 PDF로 다운로드하는 스크립트
# 필요한 의존 라이브러리
# PIP : selenium, pdfkit
# Webdriver for Chrome
# wkhtmltopdf : https://wkhtmltopdf.org
def start():
# 스크립트 작성자는 OTP가 아닌 구글 앱을 통한 2차 인증을 사용하기 때문에
# selenium에서 로그인 창을 우회할 방법이 없으므로
# 로그인 창을 거치지 않고 그냥 자동 로그인이 활성화 되어 있다고 가정하고 스크립트를 작성했음
# 따라서 과거에 크롬 selenium 이라는 유저 프로파일로 미리 애드몹 사이트에 로그인해두어야 스크립트가 정상 작동
# selenium이라는 프로필로 크롬 드라이버 생성
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("user-data-dir=selenium")
browser = webdriver.Chrome(chrome_options=chrome_options)
# 크롬 브라우저로 애드몹 결제 통계 탭으로 접속
browser.get("https://apps.admob.com/v2/payments/transaction-service")
# 중간에 어떤 에러가 나든 그냥 브라우저 통채로 닫을 수 있게 자동화 전체 코드를 try로 묶어둠
try:
# 로딩 기다림
time.sleep(10)
# 통계 창이 나타나는 프레임으로 들어감
browser.switch_to.frame(r'embedded-portal-containerIframe')
# 결제 타입 드롭 다운 메뉴에서 "지불" 선택
browser.find_element_by_css_selector(
r'[data-id="transactionFilters-1.timelineViewTransactionTypeFilter"]').click()
browser.find_element_by_css_selector(
r'[data-value="PAYMENTS"]').click()
# 통계창 갱신되므로 로딩 기다림
time.sleep(5)
# 통계창이 새로 생성되고 지워지면서 이전 iframe이 날아가므로, 뒤로 빠졌다가 다시 통계창 iframe으로 재전환
browser.switch_to.default_content()
browser.switch_to.frame(r'embedded-portal-containerIframe')
# 기간 드롭 다운 메뉴에서 "작년" 선택
browser.find_element_by_css_selector(
r'[data-id="transactionFilters-1.timelineViewDateRangeFilter"]').click()
browser.find_element_by_css_selector(
r'[data-value="PREVIOUS_YEAR"]').click()
# 통계창 갱신되므로 로딩 기다림
time.sleep(5)
# 통계창이 새로 생성되고 지워지면서 이전 iframe이 날아가므로, 뒤로 빠졌다가 다시 통계창 iframe으로 재전환
browser.switch_to.default_content()
browser.switch_to.frame(r'embedded-portal-containerIframe')
# 이 시점에서 작년의 모든 지불 영수증 통계와 링크가 나타남
# 클릭 링크들이 지연 활성화되므로, 모두 활성화 할수 있게 브라우저 페이지를 맨 아래로 스크롤링
browser.execute_script(
"window.scrollTo(0, document.body.scrollHeight);")
time.sleep(1)
# 은행으로 지불을 전송한 자료에 대한 모든 링크를 찾기, 이들은 "자동 결제"라는 텍스트를 포함하고 있음
payment_links = browser.find_elements_by_partial_link_text("자동 결제")
print("저장할 애드몹 지불 영수증 개수", len(payment_links))
# 하나씩 클릭
for payment_link in payment_links:
time.sleep(1)
payment_link.click()
time.sleep(5)
browser.switch_to.window(browser.window_handles[-1])
payment_date_elements = browser.find_elements(
by=By.CLASS_NAME, value="payment-receipt-value")
if len(payment_date_elements) > 0:
filename = payment_date_elements[0].text
pdfkit.from_string(input=browser.page_source,
output_path=(filename + ".pdf"))
print("PDF로 저장됨 : ", filename)
else:
print("NO PAYMENT DATA")
browser.close()
browser.switch_to.window(browser.window_handles[0])
browser.switch_to.default_content()
browser.switch_to.frame(r'embedded-portal-containerIframe')
finally:
browser.quit()
return
if __name__ == "__main__":
start()

세무처리에 일일이 애드몹 지불 영수증을 찍어 보내는게 귀찮아서 파이썬으로 짰다.

작년의 모든 애드몹 지불 영수증을 웹으로 찾아 들어가 PDF로 캡쳐해 파일로 저장해준다.

돌리면 이런식으로 사용자 폴더에 결과가 저장됨.