I'm using beautifulsoup to scrape a list of URLs for Covid-19 info which in turn is used to update our ArcGIS Hub page. Once in a while, a URL is broke and I get a bad handshake error. I want my script to handle this then move on. Currently, there is one URL in the list that is broke, and that one is causing the error(s) here. I tried the following exception block on these errors to no avail.
I also tried these approaches to no avail:
<SPAN class="keyword token">while</SPAN> loop<SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
<SPAN class="keyword token">except</SPAN> requests<SPAN class="punctuation token">.</SPAN>exeptions<SPAN class="punctuation token">.</SPAN>SSLError <SPAN class="keyword token">as</SPAN> error<SPAN class="punctuation token">:</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">.</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">"error"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN></SPAN><SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
item <SPAN class="operator token">=</SPAN> soup<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN>string<SPAN class="operator token">=</SPAN>re<SPAN class="punctuation token">.</SPAN>compile<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Grab and Go"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN>
soup<SPAN class="punctuation token">.</SPAN>find<SPAN class="punctuation token">(</SPAN>string<SPAN class="operator token">=</SPAN>re<SPAN class="punctuation token">.</SPAN>compile<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Grab and Go"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">else</SPAN> <SPAN class="string token">"N/A"</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>item<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> <SPAN class="punctuation token">(</SPAN>OpenSSL<SPAN class="punctuation token">.</SPAN>SSL<SPAN class="punctuation token">.</SPAN>Error<SPAN class="punctuation token">,</SPAN> ssl<SPAN class="punctuation token">.</SPAN>SSLError<SPAN class="punctuation token">,</SPAN> urllib3<SPAN class="punctuation token">.</SPAN>exceptions<SPAN class="punctuation token">.</SPAN>MaxRetryError<SPAN class="punctuation token">,</SPAN>
requests<SPAN class="punctuation token">.</SPAN>exceptions<SPAN class="punctuation token">.</SPAN>SSLError<SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">as</SPAN> error<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>error<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">break</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\contrib\pyopenssl.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">456</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> wrap_socket
cnx<SPAN class="punctuation token">.</SPAN>do_handshake<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\OpenSSL\SSL.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">1915</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> do_handshake
self<SPAN class="punctuation token">.</SPAN>_raise_ssl_error<SPAN class="punctuation token">(</SPAN>self<SPAN class="punctuation token">.</SPAN>_ssl<SPAN class="punctuation token">,</SPAN> result<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\OpenSSL\SSL.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">1647</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> _raise_ssl_error
_raise_current_error<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\OpenSSL\_util.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">54</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> exception_from_error_queue
<SPAN class="keyword token">raise</SPAN> exception_type<SPAN class="punctuation token">(</SPAN>errors<SPAN class="punctuation token">)</SPAN>
OpenSSL<SPAN class="punctuation token">.</SPAN>SSL<SPAN class="punctuation token">.</SPAN>Error<SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'SSL routines'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'tls_process_server_certificate'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'certificate verify failed'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN>
During handling of the above exception<SPAN class="punctuation token">,</SPAN> another exception occurred<SPAN class="punctuation token">:</SPAN>
Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">600</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> urlopen
chunked<SPAN class="operator token">=</SPAN>chunked<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">343</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> _make_request
self<SPAN class="punctuation token">.</SPAN>_validate_conn<SPAN class="punctuation token">(</SPAN>conn<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">839</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> _validate_conn
conn<SPAN class="punctuation token">.</SPAN>connect<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connection.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">344</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> connect
ssl_context<SPAN class="operator token">=</SPAN>context<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\util\ssl_.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">347</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> ssl_wrap_socket
<SPAN class="keyword token">return</SPAN> context<SPAN class="punctuation token">.</SPAN>wrap_socket<SPAN class="punctuation token">(</SPAN>sock<SPAN class="punctuation token">,</SPAN> server_hostname<SPAN class="operator token">=</SPAN>server_hostname<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\contrib\pyopenssl.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">462</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> wrap_socket
<SPAN class="keyword token">raise</SPAN> ssl<SPAN class="punctuation token">.</SPAN>SSLError<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'bad handshake: %r'</SPAN> <SPAN class="operator token">%</SPAN> e<SPAN class="punctuation token">)</SPAN>
ssl<SPAN class="punctuation token">.</SPAN>SSLError<SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN>
During handling of the above exception<SPAN class="punctuation token">,</SPAN> another exception occurred<SPAN class="punctuation token">:</SPAN>
Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\adapters.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">449</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> send
timeout<SPAN class="operator token">=</SPAN>timeout
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\connectionpool.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">638</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> urlopen
_stacktrace<SPAN class="operator token">=</SPAN>sys<SPAN class="punctuation token">.</SPAN>exc_info<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\urllib3\util\retry.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">399</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> increment
<SPAN class="keyword token">raise</SPAN> MaxRetryError<SPAN class="punctuation token">(</SPAN>_pool<SPAN class="punctuation token">,</SPAN> url<SPAN class="punctuation token">,</SPAN> error <SPAN class="operator token">or</SPAN> ResponseError<SPAN class="punctuation token">(</SPAN>cause<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
urllib3<SPAN class="punctuation token">.</SPAN>exceptions<SPAN class="punctuation token">.</SPAN>MaxRetryError<SPAN class="punctuation token">:</SPAN> HTTPSConnectionPool<SPAN class="punctuation token">(</SPAN>host<SPAN class="operator token">=</SPAN><SPAN class="string token">'www.cm201u.org'</SPAN><SPAN class="punctuation token">,</SPAN> port<SPAN class="operator token">=</SPAN><SPAN class="number token">443</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> Max retries exceeded <SPAN class="keyword token">with</SPAN> url<SPAN class="punctuation token">:</SPAN> <SPAN class="operator token">/</SPAN>news_<SPAN class="operator token">/</SPAN>free_breakfast___lunch_pick<SPAN class="operator token">-</SPAN>up_days <SPAN class="punctuation token">(</SPAN>Caused by SSLError<SPAN class="punctuation token">(</SPAN>SSLError<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
During handling of the above exception<SPAN class="punctuation token">,</SPAN> another exception occurred<SPAN class="punctuation token">:</SPAN>
Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
File <SPAN class="string token">"pathtofile"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">33</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> <SPAN class="operator token"><</SPAN>module<SPAN class="operator token">></SPAN>
response <SPAN class="operator token">=</SPAN> requests<SPAN class="punctuation token">.</SPAN>get<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">,</SPAN> headers<SPAN class="operator token">=</SPAN>headers<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\api.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">75</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> get
<SPAN class="keyword token">return</SPAN> request<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'get'</SPAN><SPAN class="punctuation token">,</SPAN> url<SPAN class="punctuation token">,</SPAN> params<SPAN class="operator token">=</SPAN>params<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">**</SPAN>kwargs<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\api.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">60</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> request
<SPAN class="keyword token">return</SPAN> session<SPAN class="punctuation token">.</SPAN>request<SPAN class="punctuation token">(</SPAN>method<SPAN class="operator token">=</SPAN>method<SPAN class="punctuation token">,</SPAN> url<SPAN class="operator token">=</SPAN>url<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">**</SPAN>kwargs<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\sessions.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">533</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> request
resp <SPAN class="operator token">=</SPAN> self<SPAN class="punctuation token">.</SPAN>send<SPAN class="punctuation token">(</SPAN>prep<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">**</SPAN>send_kwargs<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\sessions.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">646</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> send
r <SPAN class="operator token">=</SPAN> adapter<SPAN class="punctuation token">.</SPAN>send<SPAN class="punctuation token">(</SPAN>request<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">**</SPAN>kwargs<SPAN class="punctuation token">)</SPAN>
File <SPAN class="string token">"C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\requests\adapters.py"</SPAN><SPAN class="punctuation token">,</SPAN> line <SPAN class="number token">514</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="keyword token">in</SPAN> send
<SPAN class="keyword token">raise</SPAN> SSLError<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">,</SPAN> request<SPAN class="operator token">=</SPAN>request<SPAN class="punctuation token">)</SPAN>
requests<SPAN class="punctuation token">.</SPAN>exceptions<SPAN class="punctuation token">.</SPAN>SSLError<SPAN class="punctuation token">:</SPAN> HTTPSConnectionPool<SPAN class="punctuation token">(</SPAN>host<SPAN class="operator token">=</SPAN><SPAN class="string token">'www.cm201u.org'</SPAN><SPAN class="punctuation token">,</SPAN> port<SPAN class="operator token">=</SPAN><SPAN class="number token">443</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> Max retries exceeded <SPAN class="keyword token">with</SPAN> url<SPAN class="punctuation token">:</SPAN> <SPAN class="operator token">/</SPAN>news_<SPAN class="operator token">/</SPAN>free_breakfast___lunch_pick<SPAN class="operator token">-</SPAN>up_days <SPAN class="punctuation token">(</SPAN>Caused by SSLError<SPAN class="punctuation token">(</SPAN>SSLError<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>