行いたいこと
pyppeteerでuser-data-dir指定してブラウザ(Chrome、Edge)操作を行いたいです。
発生している問題・エラーメッセージ
Edgeでuser-data-dirを指定した場合、pyppeteer(launcher.pyのget_ws_endpoint)で以下のエラーが発生し、launchで「pyppeteer.errors.BrowserError: Browser closed unexpectedly:」が発生してしまいます。
URLError(ConnectionRefusedError(10061, '対象のコンピューターによって拒否されたため、接続できませんでした。', None, 10061, None))
python
1def get_ws_endpoint(url) -> str: 2 url = url + '/json/version' 3 timeout = time.time() + 30 4 while (True): 5 if time.time() > timeout: 6 raise BrowserError('Browser closed unexpectedly:\n') 7 try: 8 with urlopen(url) as f: #★Edgeのuser-data-dir指定時にエラー発生 9 data = json.loads(f.read().decode()) 10 break 11 except (URLError, HTTPException) as e: 12 print(repr(e)) #★エラー内容の確認 13 # pass 14 time.sleep(0.1) 15 16 return data['webSocketDebuggerUrl']
該当のソースコード
python
1import asyncio 2 3from pyppeteer import launch 4 5 6async def main(): 7 option = { 8 'headless': False, 9 'executablePath': r'Chrome or Edgeのexe', 10 'userDataDir': r'Chrome or Edgeのuser-data-dir' 11 } 12 browser = await launch(option) 13 pages = await browser.pages() 14 page = pages[0] 15 16 await page.goto('https://www.yahoo.co.jp/', { 17 'waitUntil': 'load' 18 }) 19 20 await asyncio.sleep(5) 21 await browser.close() 22 23if __name__ == '__main__': 24 asyncio.get_event_loop().run_until_complete(main()) 25 26
試したこと
Chrome、Edgeでuser-data-dirの指定あり/なしを試しましたが以下の通りでした。
【OK】Chrome かつ user-data-dir指定あり
【OK】Chrome かつ user-data-dir指定なし
【NG】Edge かつ user-data-dir指定あり
【OK】Edge かつ user-data-dir指定なし
また、optionに 「'args': ['--profile-directory=Default']」を追加してみましたが変わらずでした。
補足情報(FW/ツールのバージョンなど)
Python 3.9
pyppeteer 1.0.2
Microsoft Edge バージョン 105.0.1343.27 (公式ビルド) (64 ビット)
Google Chrome バージョン: 105.0.5195.102(Official Build) (64 ビット)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。