python + selenium 實現快照 (保存整個網頁為圖片)


研究了好久,期初只能保存頁面可見部分;  

后來采用 js 操作才保存成功,代碼如下:

from selenium import webdriver
import time
import os.path
from selenium.webdriver.chrome.options import Options

def webshot(url,saveImgName):
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    options.add_argument('--disable-gpu')
    options.add_argument('--no-sandbox')
    chromedriver = r"C:\Users\Shuai\AppData\Local\Google\Chrome\Application\chromedriver.exe"
    driver = webdriver.Chrome(options=options,executable_path =chromedriver)
    driver.maximize_window()
    # 返回網頁的高度的js代碼
    js_height = "return document.body.clientHeight"
    picname = saveImgName
    link = url 
    # driver.get(link)
    try:
        driver.get(link)
        k = 1
        height = driver.execute_script(js_height)
        while True:
            if k * 500 < height:
                js_move = "window.scrollTo(0,{})".format(k * 500)
                print(js_move)
                driver.execute_script(js_move)
                time.sleep(0.2)
                height = driver.execute_script(js_height)
                k += 1
            else:
                break
        scroll_width = driver.execute_script('return document.body.parentNode.scrollWidth')
        scroll_height = driver.execute_script('return document.body.parentNode.scrollHeight')
        driver.set_window_size(scroll_width, scroll_height)
        driver.get_screenshot_as_file(picname + ".png")
        
        print("Process {} get one pic !!!".format(os.getpid()))
        time.sleep(0.1)
    except Exception as e:
        print(picname, e)
 
 
if __name__ == '__main__':
    t = time.time()           
# 兩個參數,前面url,后面保存地址 webshot(
'http://ybj.fujian.gov.cn/zfxxgkzl/zfxxgkml/zcwj/202006/t20200611_5300786.htm','F:\\tstImg1') print("操作結束,耗時:{:.2f}秒".format(float(time.time() - t)))

以上代碼就實現了

 

這個是,判斷文件夾是否存在,不存在創建

def get_dir():
    '''判斷文件夾是否存在,如果不存在就創建一個'''
    filename = "../pics"
    if not os.path.isdir(filename):
        os.makedirs(filename)
    return filename

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM