欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)獲取網(wǎng)站或網(wǎng)頁(yè)的快照的示例代碼

 更新時(shí)間:2025年02月14日 09:23:42   作者:psonh  
本文主要介紹了Python實(shí)現(xiàn)獲取網(wǎng)站或網(wǎng)頁(yè)的快照的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、python獲取快照的實(shí)現(xiàn)原理與背景

1.1、網(wǎng)站快照需求背景

在現(xiàn)代Web開(kāi)發(fā)和數(shù)據(jù)分析中,獲取網(wǎng)頁(yè)快照是一項(xiàng)常見(jiàn)的需求。無(wú)論是為了記錄網(wǎng)頁(yè)狀態(tài)、進(jìn)行視覺(jué)回歸測(cè)試,還是生成網(wǎng)頁(yè)預(yù)覽圖,網(wǎng)頁(yè)快照都是一種非常有用的工具。

1.2、實(shí)現(xiàn)原理

網(wǎng)頁(yè)快照的本質(zhì)就是把瀏覽器里顯示的網(wǎng)頁(yè)內(nèi)容“拍個(gè)照片”,保存成圖片文件。Selenium實(shí)現(xiàn)這個(gè)功能的過(guò)程可以分為幾步:

1.2.1、啟動(dòng)瀏覽器

利用程序啟動(dòng)一個(gè)真實(shí)的瀏覽器(比如Chrome、Firefox),就像你雙擊桌面上的瀏覽器圖標(biāo)一樣。只不過(guò)這個(gè)瀏覽器是由程序控制的,你看不到它的界面(除非你特意讓它顯示出來(lái))。此處推薦使用Selenium實(shí)現(xiàn)。

1.2.2、 加載網(wǎng)頁(yè)

 Selenium會(huì)讓瀏覽器打開(kāi)你指定的網(wǎng)頁(yè)鏈接(比如https://www.example.com)。瀏覽器會(huì)像平常一樣加載網(wǎng)頁(yè)內(nèi)容,包括HTML、CSS、圖片、JavaScript等。

1.2.3、等待頁(yè)面加載完成

現(xiàn)代網(wǎng)頁(yè)很多內(nèi)容是動(dòng)態(tài)加載的,比如通過(guò)JavaScript從服務(wù)器獲取數(shù)據(jù),然后顯示在頁(yè)面上。Selenium會(huì)等待這些內(nèi)容加載完成,確保頁(yè)面是“完整的”。

1.2.4、截圖

當(dāng)頁(yè)面加載完成后,Selenium會(huì)調(diào)用瀏覽器的截圖功能,把當(dāng)前瀏覽器窗口里顯示的內(nèi)容保存成一張圖片(通常是PNG格式)。

1.2.5、 關(guān)閉瀏覽器

截圖完成后,Selenium會(huì)關(guān)閉瀏覽器,釋放資源。

二、實(shí)現(xiàn)步驟以及環(huán)境需求

1、環(huán)境需求

首先,確保你已經(jīng)安裝了Selenium庫(kù)。如果尚未安裝,可以通過(guò)以下命令進(jìn)行安裝:

pip install selenium

此外,你還需要下載與瀏覽器版本匹配的瀏覽器驅(qū)動(dòng)。例如,如果你使用的是Chrome瀏覽器,可以下載ChromeDriver。將下載的驅(qū)動(dòng)文件路徑添加到系統(tǒng)環(huán)境變量中,或者在代碼中顯式指定路徑。

1、部分老版本的Chrome瀏覽器可使用下面的鏈接下載對(duì)應(yīng)版本的驅(qū)動(dòng)文件
https://chromedriver.storage.googleapis.com/index.html
2、較新的版本可使用下面的鏈接下載對(duì)應(yīng)的驅(qū)動(dòng)文件
https://googlechromelabs.github.io/chrome-for-testing/

2、編寫(xiě)代碼

以下是完整的Python代碼示例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import time

chrome_options = Options()
plugins_path = "/Users/usernmae/Desktop/json.la/4.11.1_0.crx"
chrome_options.add_extension(plugins_path)  # 添加插件
chrome_options.add_experimental_option("detach", True)  # 瀏覽器窗口在腳本運(yùn)行完后保持打開(kāi)
chrome_options.page_load_strategy = 'none'  # 不等待頁(yè)面完全加載
chrome_options.add_argument("--headless")  # 無(wú)界面模式
chrome_options.add_argument(
    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")
driver_path = '/usr/local/bin/chromedriver'  # 指定ChromeDriver的路徑
service = Service(executable_path=driver_path)  # 初始化Service對(duì)象
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.maximize_window()
time.sleep(2)  # 等待插件加載完畢
# 打開(kāi)網(wǎng)頁(yè)
url = "https://www.baidu.com"
driver.get(url)
# 防止頁(yè)面加載不完全(具體可根據(jù)需要調(diào)整等待時(shí)間)
time.sleep(4)  
# 獲取網(wǎng)頁(yè)快照并保存為圖片
driver.save_screenshot("test.png")
# 關(guān)閉瀏覽器
driver.quit()

三、核心代碼說(shuō)明

  • WebDriver初始化通過(guò)webdriver.Chrome()創(chuàng)建一個(gè)Chrome瀏覽器實(shí)例。你可以根據(jù)需要替換為其他瀏覽器(如Firefox或Edge)。

  • 打開(kāi)網(wǎng)頁(yè)使用driver.get(url)方法打開(kāi)目標(biāo)網(wǎng)頁(yè)。該方法會(huì)等待頁(yè)面完全加載后再繼續(xù)執(zhí)行后續(xù)代碼。

  • 等待頁(yè)面加載由于現(xiàn)代網(wǎng)頁(yè)通常包含大量動(dòng)態(tài)內(nèi)容(如JavaScript渲染),我們使用time.sleep()方法等待頁(yè)面完全加載。如果需要更精確的控制,可以使用Selenium的WebDriverWait功能。

  • 保存快照使用driver.save_screenshot(path)方法將當(dāng)前網(wǎng)頁(yè)截圖并保存為PNG文件。

  • 資源清理在操作完成后,調(diào)用driver.quit()關(guān)閉瀏覽器并釋放資源。

四、其他高階說(shuō)明

1、 添加瀏覽器插件

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
plugins_path = "/Users/usernmae/Desktop/json.la/4.11.1_0.crx"
chrome_options.add_extension(plugins_path)  # 添加插件

如以上代碼我添加了廣告屏蔽插件,添加廣告屏蔽插件是為了屏蔽網(wǎng)頁(yè)中一些亂七八糟的廣告,具體插件可根據(jù)個(gè)人需求添加。

2、調(diào)整瀏覽器窗口大小

設(shè)置瀏覽器窗口最大化

driver.maximize_window()

當(dāng)然也可以設(shè)置具體寬高,代碼如下:

driver.set_window_size(1200, 800)  # 設(shè)置窗口大小為1200x800像素

3、無(wú)頭模式

如果你不需要看到瀏覽器界面,可以使用無(wú)頭模式(Headless Mode)來(lái)運(yùn)行瀏覽器,這樣可以節(jié)省資源并提高效率:

from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('--headless')  # 啟用無(wú)頭模式
driver = webdriver.Chrome(service=service, options=options)

注意:部分站點(diǎn)可能無(wú)頭模式,可能無(wú)法正常獲取網(wǎng)頁(yè)快照,需自己設(shè)置瀏覽器的UA

chrome_options.add_argument(
    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36")

四、效果展示

在這里插入圖片描述

五、總結(jié)

通過(guò)Python和Selenium,我們可以輕松實(shí)現(xiàn)網(wǎng)頁(yè)快照的獲取。無(wú)論是簡(jiǎn)單的靜態(tài)網(wǎng)頁(yè)還是復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè),Selenium都能勝任。本文提供的代碼示例和技巧可以幫助你快速上手,并根據(jù)實(shí)際需求進(jìn)行擴(kuò)展。如果你對(duì)自動(dòng)化Web操作感興趣,Selenium無(wú)疑是一個(gè)值得深入學(xué)習(xí)的工具。注意:本次教程基于MacOS系統(tǒng)實(shí)現(xiàn),Windows系統(tǒng)可根據(jù)自己的具體路徑實(shí)現(xiàn)。

到此這篇關(guān)于Python實(shí)現(xiàn)獲取網(wǎng)站或網(wǎng)頁(yè)的快照的示例代碼的文章就介紹到這了,更多相關(guān)Python 獲取網(wǎng)站或網(wǎng)頁(yè)的快照內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python進(jìn)行同期群分析(Cohort?Analysis)

    使用Python進(jìn)行同期群分析(Cohort?Analysis)

    同期群(Cohort)的字面意思(有共同特點(diǎn)或舉止類同的)一群人,比如不同性別,不同年齡。這篇文章主要介紹了用Python語(yǔ)言來(lái)進(jìn)行同期群分析,感興趣的同學(xué)可以閱讀參考一下本文
    2023-03-03
  • Django 模板中常用的過(guò)濾器實(shí)現(xiàn)

    Django 模板中常用的過(guò)濾器實(shí)現(xiàn)

    在模版中,有時(shí)候需要對(duì)一些數(shù)據(jù)進(jìn)行處理以后才能使用。一般在Python中我們是通過(guò)函數(shù)的形式來(lái)完成的。而在模版中,則是通過(guò)過(guò)濾器來(lái)實(shí)現(xiàn)的,本文就來(lái)介紹一下如何實(shí)現(xiàn)
    2021-05-05
  • pandas篩選數(shù)值列和非數(shù)值列方式

    pandas篩選數(shù)值列和非數(shù)值列方式

    這篇文章主要介紹了pandas篩選數(shù)值列和非數(shù)值列方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • OpenCV學(xué)習(xí)方框?yàn)V波實(shí)現(xiàn)圖像處理代碼示例

    OpenCV學(xué)習(xí)方框?yàn)V波實(shí)現(xiàn)圖像處理代碼示例

    這篇文章主要為大家介紹了OpenCV學(xué)習(xí)如何使用方框?yàn)V波實(shí)現(xiàn)對(duì)圖像處理代碼示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • python實(shí)現(xiàn)順序表的簡(jiǎn)單代碼

    python實(shí)現(xiàn)順序表的簡(jiǎn)單代碼

    這篇文章主要為大家詳細(xì)介紹了順序表定義及python實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python 字典 setdefault()和get()方法比較詳解

    python 字典 setdefault()和get()方法比較詳解

    這篇文章主要介紹了python 字典 setdefault()和get()方法比較詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程

    Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程

    單向鏈表也叫單鏈表,是鏈表中最簡(jiǎn)單的一種形式,它的每個(gè)節(jié)點(diǎn)包含兩個(gè)域,一個(gè)信息域(元素域)和一個(gè)鏈接域,這個(gè)鏈接指向鏈表中的下一個(gè)節(jié)點(diǎn),而最后一個(gè)節(jié)點(diǎn)的鏈接域則指向一個(gè)空值,這篇文章主要介紹了Python實(shí)現(xiàn)單項(xiàng)鏈表,需要的朋友可以參考下
    2023-01-01
  • PyTorch清理CPU緩存的實(shí)現(xiàn)步驟

    PyTorch清理CPU緩存的實(shí)現(xiàn)步驟

    在使用PyTorch進(jìn)行深度學(xué)習(xí)時(shí),頻繁的數(shù)據(jù)和計(jì)算可能導(dǎo)致CPU緩存滿載,影響性能和內(nèi)存使用,適時(shí)清理CPU緩存有助于管理內(nèi)存占用,下面就來(lái)介紹一下如何使用
    2024-09-09
  • python數(shù)據(jù)可視化plt庫(kù)實(shí)例詳解

    python數(shù)據(jù)可視化plt庫(kù)實(shí)例詳解

    這篇文章主要介紹了python可視化數(shù)據(jù)plt庫(kù)實(shí)例,下面使用pycharm環(huán)境給大家詳細(xì)介紹,文中提到j(luò)upyter和pycharm環(huán)境的差別,需要的朋友可以參考下
    2021-06-06
  • Python?Matplotlib繪制動(dòng)圖平滑曲線

    Python?Matplotlib繪制動(dòng)圖平滑曲線

    這篇文章主要介紹了Python?Matplotlib繪制動(dòng)圖平滑曲線,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考一下,需要的小伙伴可以參考一下
    2022-08-08

最新評(píng)論