2017-07-05 8 views
0

私は、pythonセレンライブラリを使用して複数のウェブサイトのスクリーンショットを撮ろうとしています。ウェブサイトの読み込みに時間がかかりすぎる場合はここでセレン(python)を使用して複数のURLのスクリーンショットを撮る

私は私がプログラムを開いて、次のウェブサイトを開始したい、

data = array of website [ 'google.com', 'youtube.com'... ] 

のようなウェブサイトの配列を持っています。

しかし、このコードは、私が期待したもの行いません...

browser = webdriver.Chrome('/Users/wk/Desktop/checkSafeContent/chromedriver') 

for index, url in enumerate(data): 
    browser.set_page_load_timeout(30)  
    try: 
     browser.get('http://'+data[index]) 
    except: 
     print("takes too long") 
     browser.quit() 
     browser = webdriver.Chrome('/Users/wk/Desktop/checkSafeContent/chromedriver') 
    else: 
     browser.maximize_window() 
     browser.implicitly_wait(20) 
     # where images saved 
     browser.save_screenshot('/.../'+str(index)+'.png') 

browser.quit() 

I)は、(私はbrowser.closeを使うべきだと思うが、私は正確にどのように知りません。

+1

どのように動作が期待どおりに異なるのですか? – Guy

+0

実行コードを投稿する必要があります。現在、 'if'を除いた' else'を持っています。 – Guy

+0

https://docs.python.org/2/tutorial/errors.htmlこのウェブサイトでは、tryブロックのためにelseを持つことができると述べています。 browser = webdriver.Chrome( '/ Users/wk/Desktop/checkSafeContent/chromedriver')がchromedriverを正しく指していれば、コードは正常に機能します。 – Sean

答えて

0

使用しているさまざまなステートメントのために、ドキュメントを読むのに少し時間を費やす必要があります。間違っていくつかを使用しています。

これはうまくいくと思います。 1つの問題は、ページが長く読み込まれた場合、ブラウザはbrowser.get()という新しいページに移動することが許可されない可能性があります。 ESCキー、またはグーグルで見つけることができる他の多くのオプションの1つを送信してみてください。

"take too long"メッセージにサイトを追加しました。そのため、どのページが時間通りに読み込まれなかったのかわかります。

browser = webdriver.Chrome('/Users/wk/Desktop/checkSafeContent/chromedriver') 
browser.set_page_load_timeout(30)  
browser.maximize_window() 

for index, url in enumerate(data): 
    try: 
     browser.get('http://' + data[index]) 
    except: 
     print(data[index] + ' took too long') 
    else: 
     # where images saved 
     browser.save_screenshot('/.../' + str(index) + '.png') 

browser.quit() 
関連する問題