我正在使用 phantomjs 使用 python 拍摄网页的快照(例如: http://www.baixaki.com.br/ )。

这是代码:

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

输入是一个网址,输出是一个图像。
问题是生成的快照又窄又长:
python - 如何使用python在phantomjs中拍摄部分网络快照?-LMLPHP

我只想捕获适合页面的内容,而无需滚动和全宽。
例如,这样的事情:
python - 如何使用python在phantomjs中拍摄部分网络快照?-LMLPHP
  • 我正在寻找一个通用的解决方案,而不是一个特定的解决方案。

  • 非常感谢您的帮助。

    最佳答案

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

    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)
    

    信用到期的信用:https://gist.github.com/jsok/9502024

    关于python - 如何使用python在phantomjs中拍摄部分网络快照?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39774342/

    10-12 07:37