Python中使用 Selenium 實(shí)現(xiàn)網(wǎng)頁(yè)截圖實(shí)例
Selenium 是一個(gè)可以讓瀏覽器自動(dòng)化地執(zhí)行一系列任務(wù)的工具,常用于自動(dòng)化測(cè)試。不過(guò),也可以用來(lái)給網(wǎng)頁(yè)截圖。目前,它支持 Java、C#、Ruby 以及 Python 四種客戶(hù)端語(yǔ)言。如果你使用 Python,則只需要在命令行里輸入“sudo easy_install selenium”并回車(chē),即可安裝 selenium 的 Python 版本的客戶(hù)端支持。
以 Python 為例,我們可以使用下面的腳本來(lái)給指定頁(yè)面(比如腳本之家首頁(yè))截圖:
# -*- coding: utf-8 -*-
#
# author: oldj <oldj.wu@gmail.com>
#
from selenium import webdriver
import time
def capture(url, save_fn="capture.png"):
browser = webdriver.Firefox() # Get local session of firefox
browser.set_window_size(1200, 900)
browser.get(url) # Load page
browser.execute_script("""
(function () {
var y = 0;
var step = 100;
window.scroll(0, 0);
function f() {
if (y < document.body.scrollHeight) {
y += step;
window.scroll(0, y);
setTimeout(f, 50);
} else {
window.scroll(0, 0);
document.title += "scroll-done";
}
}
setTimeout(f, 1000);
})();
""")
for i in xrange(30):
if "scroll-done" in browser.title:
break
time.sleep(1)
browser.save_screenshot(save_fn)
browser.close()
if __name__ == "__main__":
capture("http://www.dbjr.com.cn")
注意到,上面的代碼中,我并沒(méi)有在打開(kāi)頁(yè)面后立即截圖,而是先在頁(yè)面上執(zhí)行了一段 JavaScript 腳本,先將頁(yè)面的滾動(dòng)條拖到最下方,再拖回頂部,然后才截圖。這樣的好處是如果頁(yè)面下方有一些延遲加載的內(nèi)容,在這個(gè)操作之后一般也都已加載了。
與 PageSaver 等瀏覽器插件相比,Selenium 功能更為強(qiáng)大,例如,它可以在頁(yè)面上注入并執(zhí)行一段 JS,還可以模擬鼠標(biāo)點(diǎn)擊等行為,而且可以同時(shí)運(yùn)行多個(gè)實(shí)例(多個(gè)線(xiàn)程同時(shí)截圖)。這樣看來(lái),使用 Selenium 來(lái)給頁(yè)面截圖似乎是一個(gè)不錯(cuò)的選擇。
- 使用Python保存網(wǎng)頁(yè)上的圖片或者保存頁(yè)面為截圖
- Python 實(shí)現(xiàn)網(wǎng)頁(yè)自動(dòng)截圖的示例講解
- python實(shí)現(xiàn)自動(dòng)網(wǎng)頁(yè)截圖并裁剪圖片
- Python+Selenium+phantomjs實(shí)現(xiàn)網(wǎng)頁(yè)模擬登錄和截圖功能(windows環(huán)境)
- Python使用pyppeteer模塊實(shí)現(xiàn)無(wú)頭瀏覽器自動(dòng)化
- Python+Selenium實(shí)現(xiàn)無(wú)頭瀏覽器網(wǎng)頁(yè)截圖
相關(guān)文章
python 實(shí)現(xiàn)保存最新的三份文件,其余的都刪掉
今天小編就為大家分享一篇python 實(shí)現(xiàn)保存最新的三份文件,其余的都刪掉,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
matplotlib之多邊形選區(qū)(PolygonSelector)的使用
這篇文章主要介紹了matplotlib之多邊形選區(qū)(PolygonSelector)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Python中日期和時(shí)間的用法超強(qiáng)總結(jié)
時(shí)間無(wú)疑是生活各個(gè)方面中最關(guān)鍵的因素之一,因此,記錄和跟蹤時(shí)間變得非常重要。在?Python?中,可以通過(guò)其內(nèi)置庫(kù)跟蹤日期和時(shí)間。今天我們來(lái)介紹關(guān)于?Python?中的日期和時(shí)間,一起來(lái)了解如何使用time和datetime模塊查找和修改日期和時(shí)間2022-10-10
tensorflow 獲取所有variable或tensor的name示例
今天小編就為大家分享一篇tensorflow 獲取所有variable或tensor的name示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Python圖像處理之使用OpenCV檢測(cè)對(duì)象顏色
OpenCV顏色檢測(cè)只是一個(gè)起點(diǎn),最終目標(biāo)是最終使用Python?3代碼在視頻流幀中定位彩色元素位置,下面這篇文章主要給大家介紹了關(guān)于Python圖像處理之使用OpenCV檢測(cè)對(duì)象顏色的相關(guān)資料,需要的朋友可以參考下2022-12-12
pandas 數(shù)據(jù)實(shí)現(xiàn)行間計(jì)算的方法
今天小編就為大家分享一篇pandas 數(shù)據(jù)實(shí)現(xiàn)行間計(jì)算的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
python判斷列表字典字符串元組是否存在某個(gè)值或者空值(多種方法)
這篇文章主要介紹了python判斷列表字典字符串元組是否存在某個(gè)值或者空值,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-02-02
使用IPython來(lái)操作Docker容器的入門(mén)指引
這篇文章主要介紹了使用IPython來(lái)操作Docker容器的方法,包括一些基本的搭建和連接,主要依靠docker-py模塊,需要的朋友可以參考下2015-04-04

