从命令行或使用python从网站截取屏幕截图

时间:2013-05-02 18:01:12

标签: python command-line web screenshot

我将从此页面截取屏幕截图:http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500或保存输出的图像。

但我找不到办法。使用wget / curl,我得到一个“不可用的错误”,还有其他工具,如webkit2png / wkhtmltoimage / wkhtmltopng。

使用python或命令行有没有一种干净的方法?

祝你好运!

3 个答案:

答案 0 :(得分:14)

如果您愿意,可以使用ghost.py. http://jeanphix.me/Ghost.py/

以下是如何使用它的示例。

from ghost import Ghost
ghost = Ghost(wait_timeout=4)
ghost.open('http://www.google.com')
ghost.capture_to('screen_shot.png')

最后一行将图像保存在当前目录中。

希望这有帮助

答案 1 :(得分:6)

有时您需要额外的HTTP标头,例如User-Agent才能使下载工作。在python 2.7中,您可以:

import urllib2
request = urllib2.Request(
    r'http://books.google.de/books?id=gikDAAAAMBAJ&pg=PA1&img=1&w=2500',
    headers={'User-Agent':'Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 firefox/2.0.0.11'})
page = urllib2.urlopen(request)

with open('somefile.png','wb') as f:
    f.write(page.read())

或者您可以查看在wget或curl中添加http标头的参数。

答案 2 :(得分:6)

我很难让Ghost在无头Centos VM上持续截屏。 SeleniumPhantomJS为我工作:

from selenium import webdriver
br = webdriver.PhantomJS()
br.get('http://www.stackoverflow.com')
br.save_screenshot('screenshot.png')
br.quit