私はbeautifulsoup4を使用してスクリプトを作成しましたが、このスクリプトは基本的にWebページに存在するテーブルから暗号のリストを取得します。問題は私のpythonスクリプトがウェブページの返された内容を待つことなく、 "list index out of range"という言葉を壊したり、言ったりします。コードは以下の通りである:サイトがBeautifulsoup4を使用してデータを返すのを待つ方法
ssl_lab_url = 'https://www.ssllabs.com/ssltest/analyze.html?d='+site
req = requests.get(ssl_lab_url)
data = req.text
soup = BeautifulSoup(data)
print CYELLOW+"Now Bringing in the LIST of cipher gathered from SSL LABS for "+str(ssl_lab_url)+CEND
for i in tqdm(range(10000)):
sleep(0.01)
table = soup.find_all('table',class_='reportTable', limit=5)[-1]
data = [ str(td.text.split()[0]) for td in table.select("td.tableLeft")]
print CGREEN+str(data)+CEND
time.sleep(1)
それは時々data
に何も返さないか、と言う:
Traceback (most recent call last):
File "multiple_scan_es.py", line 79, in <module>
scan_cipher_ssl(list_url)
File "multiple_scan_es.py", line 62, in scan_cipher_ssl
table = soup.find_all('table',class_='reportTable', limit=5)[-1]
IndexError: list index out of range
私はそうする方法を、ここで待っする必要がありますか?
このページのユーザーサーバーからデータを取得して表示するJavaScript。 '要求'と 'BS'はJavaScriptを実行しないので、このようにこのデータを取得することはできません。 JavaScriptを実行できるブラウザやJavaScriptを実行する他のツールを制御するには、Seleniumが必要です。または、JavaScriptを使用するURLを取得し、 '要求 'と共に使用する必要があります – furas
スクリプトを変更するにはどれだけの労力が必要ですか?この問題のために@furas私はそれらを使用すると微調整する領域を知りたい – Kittystone
SeleniumはブラウザのChrome/Firefoxを使ってページをレンダリングし(JavaScriptを実行する)、HTMLを取得する前に待機する 'wait(time)'のような機能を提供しますすべての変更はJavaScriptによって行われます。 – furas