python将网页转换为图片保存

前言:我们可能会遇到将html网页转为图片,介绍我遇到的两种不同情况下的方式。
环境:python中的selenium
1.网站中的网页转换为图片:
思路:使用selenium的PhantomJS将网页转换为图片。

#-*- coding=utf-8 -*-
#@Time : 2020/8/7 10:08 PM
#@Author : 小邋遢
#@File : tset.py
#@Software : PyCharm

from selenium import webdriver  # 从selenium库导入webdirver
#截取网页照片函数
def screen_shot(url,png_name):
    # 使用webdirver.PhantomJS()方法新建一个phantomjs的对象,这里会使用到phantomjs.exe,环境变量path中找不到phantomjs.exe,则会报错
    brower = webdriver.PhantomJS()
    # 使用get()方法,打开指定页面。注意这里是phantomjs是无界面的,所以不会有任何页面显示
    brower.get(url)
    # 设置phantomjs浏览器全屏显示
    brower.maximize_window()
    # 使用save_screenshot将浏览器正文部分截图,即使正文本分无法一页显示完全,save_screenshot也可以完全截图
    brower.save_screenshot(png_name)
    # 关闭phantomjs浏览器,不要忽略了这一步,否则你会在任务浏览器中发现许多任务
    brower.close()
if __name__ == '__main__':
    url ="https://news.163.com/20/0807/19/FJEUBJJU0001899O.html"
    screen_shot(url,'1.png')

效果如下:

2.将本地的文件夹下的html文件保存为图片。

#-*- coding=utf-8 -*-
#@Time : 2020/8/7 7:55 PM
#@Author : 小邋遢
#@File : get_image.py
#@Software : PyCharm

"""
将html页面转换为图片
"""
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--start-maximized')
path = os.getcwd()
filename = path + "/data/train/article/img/"


for i in range(60):
    url = "file://(你的路径,如/user,记住这里是三个/)" + "{}".format(i+1) +".html"
    print(url)
    driver = webdriver.Chrome(options=chrome_options)
    driver.get(url)
    # 将该页面的展开到最大
    width = driver.execute_script("return Math.max(document.body.scrollWidth,document.body.offsetWidth, document.documentElement.clientWidth, document.documentElement.scrollWidth, document.documentElement.offsetWidth);")
    height = driver.execute_script("return Math.max(document.body.scrollHeight, document.body.offsetHeight,document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);")
    driver.set_window_size(width,height)
    
    driver.save_screenshot(os.path.join(filename,str(i+1)+'.png'))
    driver.close()

结果如下图:

你可能感兴趣的:(python,python,selenium,html,web)