実現したいこと
・とあるサイト(URL3つ)の表データをcsvに出力したい。(本当は任意のURLを何個も書きたいですがここは例で3つにしています)
・その際、おそらくサイトの表をcsvにする段階で、下記エラーになる
前提
・エラーメッセージかなり長いですが、1番下の行を訳すると、SSL証明の検証でエラーと書かれています
・python16行目のURLのprintまではうまくいっているようです(出力結果2行目)
発生している問題・エラーメッセージ
DevTools listening on ws://127.0.0.1:64633/devtools/browser/a3577e7d-a91f-466d-9e77-8fc8c126ba59 ['https://finance.yahoo.co.jp/quote/5838.T/history', 'https://finance.yahoo.co.jp/quote/7330.T/history', 'https://finance.yahoo.co.jp/quote/5572.T/history'] Traceback (most recent call last): File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1348, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1282, in request self._send_request(method, url, body, headers, encode_chunked) File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1328, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1277, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1037, in _send_output self.send(msg) File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 975, in send self.connect() File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\http\client.py", line 1454, in connect self.sock = self._context.wrap_socket(self.sock, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 517, in wrap_socket return self.sslsocket_class._create( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 1075, in _create self.do_handshake() File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\ssl.py", line 1346, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\ukata\KABU10days\10days_error.py", line 25, in <module> df = pd.read_html(url) ^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\html.py", line 1212, in read_html return _parse( ^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\html.py", line 981, in _parse tables = p.parse_tables() ^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\html.py", line 257, in parse_tables tables = self._parse_tables(self._build_doc(), self.match, self.attrs) ^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\html.py", line 816, in _build_doc raise e File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\html.py", line 797, in _build_doc with urlopen(self.io) as f: ^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\io\common.py", line 270, in urlopen return urllib.request.urlopen(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 216, in urlopen return opener.open(url, data, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 519, in open response = self._open(req, data) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 536, in _open result = self._call_chain(self.handle_open, protocol, protocol + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 496, in _call_chain result = func(*args) ^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1391, in https_open return self.do_open(http.client.HTTPSConnection, req, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\ukata\AppData\Local\Programs\Python\Python311\Lib\urllib\request.py", line 1351, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)>
該当のソースコード
Python
1#インポートとか色々 2from selenium import webdriver 3from selenium.webdriver.common.by import By 4from selenium.webdriver.common.keys import Keys 5import time 6from selenium.webdriver.chrome import service as fs 7CHROMEDRIVER = "C:\chromedriver_win32\chromedriver.exe" 8 9chrome_service = fs.Service(executable_path=CHROMEDRIVER) 10browser = webdriver.Chrome(service=chrome_service) 11 12 13#yahoo financeのURL 14list_urls = ['https://finance.yahoo.co.jp/quote/5838.T/history','https://finance.yahoo.co.jp/quote/7330.T/history','https://finance.yahoo.co.jp/quote/5572.T/history'] 15 16print(list_urls) 17 18# webサイトの表をCSVに出力 19import pandas as pd 20import sys 21 22dfs = [] 23for url in list_urls: 24 try: 25 df = pd.read_html(url) 26 dfs.append(df[0]) 27 except ValueError: 28 print('not found stock table', file=sys.stderr) 29 break 30else: 31 df = pd.concat(dfs, ignore_index=True) 32 df.to_csv('out.csv', index=False, encoding='shift-jis') 33
試したこと
一通りググって解決法を真似してみましたが、うまくいきません
補足情報(FW/ツールのバージョンなど)
Windows10使用
