AWS lambda selenium webdriverでスクリーンショット取得するようにしていますが、文字化けがなかなか解消しません
以下のサイトを参考にしてフォントを設置しております。
https://masakimisawa.com/selenium_headless-chrome_python_on_lambda/
実行時にフォントがうまく置かれているか出力確認するようにして
問題なく設置できていると思っております。
別途こちらのサイトも参考にやってみましたが、
フォントキャッシュの生成というのがうまくできませんでした。
https://qiita.com/komeda-shinji/items/e049edd1389579059c53
その他簡単な方法がありましたら教えていただければと思います。
(公開されているフォントのlambdaレイヤーのARNとかありますか?)
python
1import os 2import glob 3 4from selenium import webdriver 5from ftplib import FTP_TLS 6 7 8localpath = "/tmp/" 9ftppath = "####/test/" 10 11 12# webdriber.chrome option 設定 13options = webdriver.ChromeOptions() 14options.add_argument("--headless") 15options.add_argument("--disable-gpu") 16options.add_argument("--window-size=1704x1078") 17options.add_argument("--disable-application-cache") 18options.add_argument("--disable-infobars") 19options.add_argument("--no-sandbox") 20options.add_argument("--hide-scrollbars") 21options.add_argument("--enable-logging") 22options.add_argument("--log-level=0") 23options.add_argument("--v=99") 24options.add_argument("--single-process") 25options.add_argument("--ignore-certificate-errors") 26options.add_argument("--homedir=/tmp") 27options.binary_location = "/opt/bin/headless-chromium" 28 29 30 31#FTPS でファイルを 1 件アップロード 32def push(local_path: str,remote_path: str) -> None: 33 hostname = "##########" 34 username = "##########" 35 password = "##########" 36 37 with FTP_TLS(host=hostname, user=username, passwd=password) as ftp: 38 print("UPLOAD--- " + hostname + " " + local_path + " ---> " + remote_path) 39 ftp.storbinary('STOR {}'.format(remote_path), open(local_path, 'rb')) 40 41 42 43def lambda_handler(event, contxt): 44 45 print("--------------------------------") 46 print("環境変数",os.environ['HOME']) 47 48 print("----- /opt/.font") 49 files = os.listdir("/opt/.font") 50 for file in files: 51 print(file) 52 53 print("----- os.environ['HOME']") 54 files = os.listdir(os.environ['HOME']) 55 for file in files: 56 print(file) 57 58 print("--------------------------------") 59 60 url = "https://www.yahoo.co.jp/" 61 62 driver = webdriver.Chrome("/opt/bin/chromedriver", chrome_options=options) 63 64 print("接続--> "+url) 65 66 driver.set_window_size(1200, 1200) 67 driver.get(url) 68 time.sleep(3) 69 70 imgname = localpath + "screenshot.png" 71 72 # スクリーンショット 73 driver.get_screenshot_as_file(imgname) 74 print("画像保存 "+imgname) 75 76 driver.close() 77 78 79 files = glob.glob(localpath+"*.png") 80 for file in files: 81 if os.path.isfile(file): 82 filename = os.path.basename(file) 83 ftpfile = ftppath + str(filename) 84 localfile = localpath+str(filename) 85 #print(localfile," --> ",ftpfile) 86 push(local_path=localfile,remote_path=ftpfile) 87 88 #ファイル削除 89 #os.remove(localfile) 90 91 print() 92 93 return "ok" 94
実行結果
-------------------------------- 環境変数 /opt/ ----- /opt/.font NotoSansCJKjp-Regular.otf NotoSansMonoCJKjp-Regular.otf ipaexg.ttf ipaexm.ttf ----- os.environ['HOME'] .font bin python -------------------------------- 接続--> https://www.yahoo.co.jp/ 画像保存 /tmp/screenshot.png UPLOAD--- ######### /tmp/screenshot..png ---> #####/test/screenshot..png
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/02 02:12
退会済みユーザー
2021/05/02 02:37
退会済みユーザー
2021/05/02 02:40
退会済みユーザー
2021/05/02 02:41
2021/05/02 04:14
退会済みユーザー
2021/05/02 06:01
2021/05/02 06:53
退会済みユーザー
2021/05/02 08:23
2021/05/02 08:32
退会済みユーザー
2021/05/03 03:48
退会済みユーザー
2021/05/03 05:24 編集
2021/05/03 05:32
退会済みユーザー
2021/05/04 04:05
2021/05/04 05:37
退会済みユーザー
2021/05/04 05:52
2021/05/04 06:05
退会済みユーザー
2021/05/04 07:39 編集
退会済みユーザー
2021/05/04 07:47 編集
2021/05/04 09:04
退会済みユーザー
2021/05/04 09:08