使用selenium(python)截取多个URL的屏幕截图

时间:2017-07-05 12:25:27

标签: python arrays selenium exception

我正在尝试使用python selenium库截取多个网站。

这里我有一个像

这样的网站数组
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()

我想我应该使用browser.close(),但我不确切知道如何。

1 个答案:

答案 0 :(得分:0)

您应该花一些时间阅读您正在使用的不同语句的文档。您正在使用多个错误。

我认为这会奏效。一个问题可能是,如果页面加载时间很长,则不允许浏览器导航到browser.get()的新页面。您可以尝试发送ESC密钥或通过Google搜索找到的许多其他选项之一。

我将网站添加到“花费太长时间”的消息中,以便您知道哪些网站没有及时完成加载。

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()