【问题标题】:Selenium - how to take multiple screenshots (burst) and save them tooSelenium - 如何拍摄多个屏幕截图(连拍)并保存它们
【发布时间】:2018-01-24 15:48:21
【问题描述】:

访问包含数据的网站时,我收到“拒绝访问”消息,但由于存在错误,我能够在大约十分之一秒内看到我想要抓取的数据。

我不认为可以“下载” .xml 或类似格式的数据,但我很乐意提供它的屏幕截图。

为了实现这一点,我需要编写能在 3 秒内截屏大约 30 次的代码(在请求打开页面和收到“拒绝访问”消息之间)。

这样可行吗?

没有语言/浏览器偏好,愿意适应。

【问题讨论】:

  • 只是做一个 webdriver 等待访问被拒绝消息,然后陷入一个循环截屏,休眠十分之一秒,然后再截屏......大约 5 -10 秒左右。
  • 欢迎来到 Stack Overflow!请参阅:How do I do X? SO 的期望是,提出问题的用户不仅会进行研究以回答他们自己的问题,还会分享该研究、代码尝试和结果。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask

标签: selenium selenium-webdriver web-scraping


【解决方案1】:

对于您的任务,使用它会更有帮助 driver.getPageSource()
它将以字符串形式获取 html 源代码,因此您可以保存它。
webdriver docs

【讨论】:

  • 您认为即使内容仅在十分之一秒内可见,它也会起作用吗?
  • 我不确定,但我认为您可以在循环内部进行迭代,将每个结果保存到列表中,并且可能会走运。
【解决方案2】:

您可以通过循环调用get_screenshot_as_file() 来截取任意数量的屏幕截图。使用strftime() 为屏幕截图名称添加时间戳,以便screenshot 名称不同。

driver.get_screenshot_as_file("C:\\path\\screenshots\\{}.png".format(strftime("%Y-%m-%d %H:%M:%S", gmtime())))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多