Pandas version checks

  • [X] I have checked that this issue has not already been reported.

  • [X] I have confirmed this bug exists on the latest version of pandas.

  • [X] I have confirmed this bug exists on the main branch of pandas.

Reproducible Example

import pandas as pd

sp500 = pd.read_html("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies")[0]

Issue Description

when running this I get (path names shortened to ... ):

Traceback (most recent call last):
  File "...\Python311\Lib\urllib\request.py", line 1348, in do_open   
    h.request(req.get_method(), req.selector, req.data, headers,
  File "...\Python311\Lib\http\client.py", line 1282, in request      
    self._send_request(method, url, body, headers, encode_chunked)
  File "...\Python311\Lib\http\client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "...\Python311\Lib\http\client.py", line 1277, in endheaders   
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "...\Python311\Lib\http\client.py", line 1037, in _send_output 
    self.send(msg)
  File "...\Python311\Lib\http\client.py", line 975, in send
    self.connect()
  File "...\Python311\Lib\http\client.py", line 1454, in connect      
    self.sock = self._context.wrap_socket(self.sock,
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\ssl.py", line 517, in wrap_socket
    return self.sslsocket_class._create(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\ssl.py", line 1075, in _create
    self.do_handshake()
  File "...\Python311\Lib\ssl.py", line 1346, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:992)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "MYPROJECTPATH\main.py", line 7, in <module>
    sp500 = pd.read_html("https://en.wikipedia.org/wiki/List_of_S%26P_500_companies")
            ^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\util\_decorators.py", line 331, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\io\html.py", line 1205, in read_html
    return _parse(
           ^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\io\html.py", line 986, in _parse
    tables = p.parse_tables()
             ^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\io\html.py", line 262, in parse_tables
    tables = self._parse_tables(self._build_doc(), self.match, self.attrs)
                                ^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\io\html.py", line 821, in _build_doc
    raise e
  File "...\Python311\Lib\site-packages\pandas\io\html.py", line 802, in _build_doc
    with urlopen(self.io) as f:
         ^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\site-packages\pandas\io\common.py", line 265, in urlopen
    return urllib.request.urlopen(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\urllib\request.py", line 216, in urlopen
    return opener.open(url, data, timeout)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\urllib\request.py", line 519, in open
    response = self._open(req, data)
               ^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\urllib\request.py", line 536, in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\Python311\Lib\urllib\request.py", line 496, in _call_chain
    result = func(*args)
             ^^^^^^^^^^^
  File "...\Python311\Lib\urllib\request.py", line 1391, in https_open
    return self.do_open(http.client.HTTPSConnection, req,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "...\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: certificate has expired (_ssl.c:992)>

Expected Behavior

After additional code, the expected result would be a list of all the tickers from the S&P 500 sourced from this wikipedia page: https://en.wikipedia.org/wiki/List_of_S%26P_500_companies

Installed Versions

INSTALLED VERSIONS ------------------ commit : 2e218d10984e9919f0296931d92ea851c6a6faf5 python : 3.11.2.final.0 python-bits : 64 OS : Windows OS-release : 10 Version : 10.0.19045 machine : AMD64 processor : Intel64 Family 6 Model 158 Stepping 10, GenuineIntel byteorder : little LC_ALL : None LANG : en_US.UTF-8 LOCALE : English_United States.1252 pandas : 1.5.3 numpy : 1.24.2 pytz : 2022.7.1 dateutil : 2.8.2 setuptools : 65.5.0 pip : 22.3.1 Cython : 0.29.34 pytest : None hypothesis : None sphinx : None blosc : None feather : None xlsxwriter : None lxml.etree : 4.9.2 html5lib : 1.1 pymysql : None psycopg2 : None jinja2 : None IPython : None pandas_datareader: None bs4 : 4.11.2 bottleneck : None brotli : None fastparquet : None fsspec : None gcsfs : None matplotlib : 3.7.1 numba : None numexpr : None odfpy : None openpyxl : None pandas_gbq : None pyarrow : None pyreadstat : None pyxlsb : None s3fs : None scipy : None snappy : None sqlalchemy : None tables : None tabulate : 0.9.0 xarray : None xlrd : None xlwt : None zstandard : None tzdata : None

Comment From: mroeschke

Thanks for the report but this isn't an issue with pandas specifically. You will need to update your certificate to make this request work. Closing