如何使用python在phantomjs中拍摄部分web快照?

如何使用python在phantomjs中拍摄部分web快照?,python,selenium,phantomjs,Python,Selenium,Phantomjs,我使用phantomjs使用python拍摄网页快照(例如:) 代码如下: from selenium import webdriver driver = webdriver.PhantomJS() # or add to your PATH driver.get('http://www.baixaki.com.br/') driver.save_screenshot('screen6.png') # save a screenshot to disk 输入是url,输出是图像。 问题是生成

我使用phantomjs使用python拍摄网页快照(例如:)

代码如下:

from selenium import webdriver
driver = webdriver.PhantomJS() # or add to your PATH

driver.get('http://www.baixaki.com.br/')
driver.save_screenshot('screen6.png') # save a screenshot to disk
输入是url,输出是图像。 问题是生成的快照既窄又长:

我只想捕获适合页面的内容,而不需要滚动和全宽。 例如,类似这样的内容:

  • 我在寻找一个通用的解决方案,而不是一个具体的解决方案

非常感谢你的帮助

您可以尝试裁剪图像(我使用的是Python3.5,因此如果您使用的是Python2.X,您可能需要调整以使用StringIO):

从io导入字节io
从selenium导入webdriver
从PIL导入图像
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
driver=webdriver.PhantomJS('C:')
驱动程序。设置窗口大小(1400,1000)
司机,上车http://www.baixaki.com.br/')
driver.save_屏幕截图('screen6.png')
screen=driver.get_screenshot_as_png()
#作物图像
框=(0,01366728)
im=图像打开(字节(屏幕))
区域=即时裁剪(框)
region.save('screen7.png','png',optimize=True,quality=95)

信用到期时的信用:

这篇文章不是用python写的,而是使用特定元素的id指向特定的网页。我正在寻找一个通用的解决方案,使用python为页面的某个部分拍摄快照…嗯。。。没有我想象的那么有用,因为Python比我想象的更不同(我认为跳转会更容易);您是否尝试过webdriver设置窗口大小功能?例如,司机。设置车窗大小(14001000)嗨,首先我感谢你的帮助。谢谢我试过了,但没有成功……谢谢。看起来很有前途。这将是图像的顶部,但是在我的例子中,页面有一个弹出对话框,它在那个疯狂的高截图中间,所以我必须裁剪两次:一次是顶部(得到页眉),一次是中间(中间得到对话)。我需要一种方法让selenium尊重set_window_size()的高度。它希望屏幕覆盖整个可滚动高度,而不是“查看矩形”。
from io import BytesIO
from selenium import webdriver
from PIL import Image

if __name__ == '__main__':
    driver = webdriver.PhantomJS('C:<Path to Phantomjs>')
    driver.set_window_size(1400, 1000)
    driver.get('http://www.baixaki.com.br/')
    driver.save_screenshot('screen6.png')
    screen = driver.get_screenshot_as_png()

    # Crop image
    box = (0, 0, 1366, 728)
    im = Image.open(BytesIO(screen))
    region = im.crop(box)
    region.save('screen7.png', 'PNG', optimize=True, quality=95)