実現したいこと
ここに実現したいことを箇条書きで書いてください。
前提
Python Seleniumを使用して、上記工程を自動化しております。
ループ内でPDFを取得する過程において、指定フォルダに101枚のPDFが保存されると、
ページ遷移と印刷ダイアログは表示されるのですが、以降のPDFが保存されなくなります。
page
page(1)
page(2)
...
page(100)
というPDFまでが保存され、最後の結合でもページ数101枚のPDFが作成されます。
エラーは表示されず、処理終了となります。どこか不明な場所へ保存されているのではないかと思われます。
初心者でして、作法などあまり分かっておらず、お手柔らかにお願いできますと幸いです。
該当のソースコード
Python
1from selenium import webdriver 2from selenium.webdriver.common.by import By 3from selenium.webdriver.support import expected_conditions as EC 4from selenium.webdriver.chrome.options import Options 5import time 6import chromedriver_binary 7import pickle 8import json 9import os 10import random 11import pypdf 12import glob 13import shutil 14 15 16error_flg = False17options = Options()18options.add_argument('--kiosk-printing')19 20download = '/Users/me/Documents/pdfs' #保存先21 22target_url ='https://~~~?page=1' #アクセスするURL23 24#プリンタを自動で閉じる25appState = {26 "recentDestinations": [27 {28 "id": "Save as PDF",29 "origin": "local",30 "account": ""31 }32 ],33 "selectedDestinationId": "Save as PDF",34 "version": 2,35 "pageSize": 'A4'36}37 38options.add_experimental_option("prefs", {39 "printing.print_preview_sticky_settings.appState":40 json.dumps(appState),41 "savefile.default_directory" : download })42 43driver = webdriver.Chrome(options=options)44 45# 取得済みクッキーの読み込み・書き込み46if error_flg is False:47 try:48 driver.get(target_url)49 driver.delete_all_cookies()50 cookies = pickle.load(open("cookies.pkl", "rb"))51 for cookie in cookies:52 driver.add_cookie(cookie)53 # URLにアクセス54 driver.get(target_url)55 56 time.sleep(1)57 58 except Exception:59 print('取得済みクッキーの読み込み・書き込み時にエラーが発生しました。')60 error_flg = True61 62if error_flg is False:63 try: 64 #タイトルの取得65 pdf_title = driver.find_element(by=By.CLASS_NAME,value='Info__title').text 66 #最後のページへ移動67 move_tail = driver.find_element(by=By.ID,value="move-tail")68 move_tail.click()69 70 #最後のページの数値を取得71 cur_url = driver.current_url 72 target = 'page='73 74 tail_idx = cur_url.find(target)75 tail_number = int(cur_url[tail_idx+len(target):])76 77 num = tail_number - 1 #処理する回数78 79 move_head = driver.find_element(by=By.ID,value="move-top")80 move_head.click()81 82 for _ in range(num):83 button = driver.find_element(by=By.ID,value='print')84 button.click() #印刷85 86 time.sleep(1)87 88 next = driver.find_element(by=By.ID,value="move-next")89 next.click() #次のページへ90 91 time.sleep(1)92 93 driver.close()94 95 except Exception:96 print('PDF化中にエラーが発生しました。')97 error_flg = True98 99if error_flg is False:100 try: 101 #PDFを結合102 dir_path = "/Users/fukushimashun/Documents/pdfs/"103 104 def merge_pdf_in_dir(dir_path, dst_path):105 106 l = glob.glob(os.path.join(dir_path, '*.pdf'))107 l.sort()108 109 merger = pypdf.PdfMerger()110 for p in l:111 merger.append(p)112 113 merger.write(dst_path)114 merger.close()115 116 merge_pdf_in_dir('/Users/me/Documents/pdfs', f'/Users/me/Documents/outputs/{pdf_title}.pdf')117 118 #ファイル削除119 target_dir = '/Users/me/Documents/pdfs'120 121 shutil.rmtree(target_dir)122 os.mkdir(target_dir)123 124 except Exception:125 print('PDF結合処理中にエラーが発生しました。')126 error_flg = True
試したこと
chromeの更新とdriver再ダウンロード
補足情報(FW/ツールのバージョンなど)
chromeは118.0.5993.117
chrome driverは118.0.5993.70になっています。
0 コメント