前言:我们可能会遇到将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()
结果如下图: