Python每次加载时都会截取特定选项卡

时间:2018-06-10 10:09:43

标签: python python-3.x web-scraping screenshot screen-scraping

问题:我想写一个Python脚本,它会截取我每次加载时在浏览器中打开的网站的截图。

问题是我有一个网站,其中有300个考试问题我可以通过,尝试其中每一个,我会在提交答案时进行更正。在特定日期之后我将无法访问此调查问卷,但我想保留问题(我可以写下来,但我的懒惰很强,并且想要学习Python)。

“尝试”:我想用imgkit做一个简单的Python脚本来截取屏幕截图。我对其他建议持开放态度,因为imgkit是我在寻找这个时看到的第一件事,代码看起来很简单:

import imgkit

imgkit.from_url('http://webpage.com', 'out.jpg')

但是我必须为每个网页提供网址,这比使用操作系统功能截图更加繁琐,因此我希望将其自动化。

问题:

  • 有一种方法可以让Python monitor 成为一个浏览器选项卡,并在每次重新加载时截取屏幕截图(将出现一个新问题时)?
  • 或者可以获取标签的URL以将其传递给imgkit并截取屏幕截图。
  • 我看到的另一件事是imgkit可以从HTML文件生成“屏幕截图”。 Python可以从我在浏览器中打开的选项卡下载HTML代码吗?

1 个答案:

答案 0 :(得分:1)

Selenium是你的朋友。它是一个专为测试而设计的框架,但它可以让你想要的东西变得非常容易。

Selenium允许您启动Web浏览器并对其进行控制。因此,您可以指示它转到您想要的网址然后执行操作。通常你会指示它点击这里,写一个表格等等。

在您的情况下,您只希望它打开某个地址,截取屏幕截图,转到下一个地址并重复。

Here你有一个如何做你想要的教程。

具体代码是:

from selenium import webdriver

#1. Get the driver to manage the web-browser you choose
driver = webdriver.Chrome()

#2. Go the the webadress you want
driver.get('https://python.org')

#3. Take a screenshot
driver.save_screenshot("screenshot.png")

driver.close()

PS:为了让教程运行,您需要安装Selenium的Web驱动程序才能启动并运行Chrome。 Here是对此的说明。