【问题标题】:Take screenshot of multiple URLs using selenium (python)使用 selenium (python) 截取多个 URL
【发布时间】:2017-12-09 02:57:12
【问题描述】:

我正在尝试使用 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(),但我不知道具体如何。

【问题讨论】:

  • 行为与您的预期有何不同?
  • 你应该发布运行代码。目前你有else 没有if
  • docs.python.org/2/tutorial/errors.html。这个网站说我们可以有其他的尝试块。如果 browser = webdriver.Chrome('/Users/wk/Desktop/checkSafeContent/chromedriver') 正确指向 chromedriver,则代码可以正常工作。
  • 您不必quit() 浏览器,只需将其指向下一个 URL 并继续。 implicitly_wait 没有做你认为的事情。您应该阅读文档并了解它的工作原理和作用。

标签: python arrays selenium exception


【解决方案1】:

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

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

我将该网站添加到“花了太长时间”消息中,这样您就可以知道哪些网站没有及时完成加载。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-12
    • 2016-09-26
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多