1. ホーム
  2. python

[解決済み] ハンドシェイクに失敗し、-1、SSL エラーコード 1、net_error -201 を返しました。

2022-02-07 14:31:05

質問

私はseleniumを使用してpythonを使用してWebスクレイピングをしようとしていますが、私はコードを実行するたびに、私は取得します。 エラー

[4824:524:0818/154954.605:ERROR:ssl_client_socket_impl.cc(959)] handshake failed; returned -1, SSL error code 1, net_error -201
[4824:524:0818/154954.614:ERROR:ssl_client_socket_impl.cc(959)] handshake failed; returned -1, SSL error code 1, net_error -201
[4824:524:0818/154954.721:ERROR:ssl_client_socket_impl.cc(959)] handshake failed; returned -1, SSL error code 1, net_error -201
[4824:524:0818/154954.730:ERROR:ssl_client_socket_impl.cc(959)] handshake failed; returned -1, SSL error code 1, net_error -201
Empty DataFrame
Columns: [Rank, Country, Total Cases, New Cases, Deaths, New Deaths, Recovered, Active Cases, Critical]
Index: []

私のコード私はworldometerと呼ばれるウェブサイトで行くためにセレニウムを使用しようとしているとpandasを使用して彼らのウェブサイトで存在するテーブルからデータを抽出します。私はパイソンバージョン3.6.8を使用しています。

OpenSSlをインストールするなどの修正を試しましたが、インストールされませんでした。 また、--ignore-certificate-errors や --ignore-ssl-errors を追加するなどの他の修正も試しましたが、これもうまくいきませんでした。

import pandas as pd
import time

# Covid 19 Webscraper

browser = webdriver.Chrome('C:\\webdrivers\\chromedriver.exe')

# opening sites

browser.get("https://www.worldometers.info/coronavirus/")
time.sleep(15)

#creating Data Frame

df = pd.DataFrame(columns=['Rank','Country','Total Cases','New Cases','Deaths','New Deaths','Recovered','Active Cases','Critical'])

# finding xpath and info

for i in browser.find_elements_by_xpath("//*[@id='main_table_countries_today']/tbody/tr"):
    td_list = i.find_elements_by_tag_name('td')
    row = []
    for td in td_list:
        row.append(td.text)
    data={}
    for j in range(len(df.columns)):
        data[df.columns[j]] = row[j]
    
    df.append(data, ignore_index=True)
print(df)

解決方法は?

お使いのブラウザのストアには、ウェブサイトが必要とする証明書がないように見えます。以下のようにクロームのオプションを使用してください。

options = webdriver.ChromeOptions()
options.add_argument("--ignore-certificate-error")
options.add_argument("--ignore-ssl-errors")
browser = webdriver.Chrome('C:\\webdrivers\\chromedriver.exe',options=options)
browser.get("https://www.worldometers.info/coronavirus/")

キャパビライツで。

caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
caps['acceptSslCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)