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

Python中使用 Selenium 實現(xiàn)網(wǎng)頁截圖實例

 更新時間:2014年07月18日 10:41:35   投稿:junjie  
這篇文章主要介紹了Python中使用 Selenium 實現(xiàn)網(wǎng)頁截圖實例,Selenium支持Java、C#、Ruby 以及 Python等語言,本文以Python語言為例,需要的朋友可以參考下

Selenium 是一個可以讓瀏覽器自動化地執(zhí)行一系列任務(wù)的工具,常用于自動化測試。不過,也可以用來給網(wǎng)頁截圖。目前,它支持 Java、C#、Ruby 以及 Python 四種客戶端語言。如果你使用 Python,則只需要在命令行里輸入“sudo easy_install selenium”并回車,即可安裝 selenium 的 Python 版本的客戶端支持。

以 Python 為例,我們可以使用下面的腳本來給指定頁面(比如腳本之家首頁)截圖:

# -*- 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")

注意到,上面的代碼中,我并沒有在打開頁面后立即截圖,而是先在頁面上執(zhí)行了一段 JavaScript 腳本,先將頁面的滾動條拖到最下方,再拖回頂部,然后才截圖。這樣的好處是如果頁面下方有一些延遲加載的內(nèi)容,在這個操作之后一般也都已加載了。

與 PageSaver 等瀏覽器插件相比,Selenium 功能更為強大,例如,它可以在頁面上注入并執(zhí)行一段 JS,還可以模擬鼠標(biāo)點擊等行為,而且可以同時運行多個實例(多個線程同時截圖)。這樣看來,使用 Selenium 來給頁面截圖似乎是一個不錯的選擇。

相關(guān)文章

  • python 實現(xiàn)保存最新的三份文件,其余的都刪掉

    python 實現(xiàn)保存最新的三份文件,其余的都刪掉

    今天小編就為大家分享一篇python 實現(xiàn)保存最新的三份文件,其余的都刪掉,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • matplotlib之多邊形選區(qū)(PolygonSelector)的使用

    matplotlib之多邊形選區(qū)(PolygonSelector)的使用

    這篇文章主要介紹了matplotlib之多邊形選區(qū)(PolygonSelector)的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python處理大數(shù)字的方法

    python處理大數(shù)字的方法

    這篇文章主要介紹了python處理大數(shù)字的方法,涉及Python遞歸操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python中日期和時間的用法超強總結(jié)

    Python中日期和時間的用法超強總結(jié)

    時間無疑是生活各個方面中最關(guān)鍵的因素之一,因此,記錄和跟蹤時間變得非常重要。在?Python?中,可以通過其內(nèi)置庫跟蹤日期和時間。今天我們來介紹關(guān)于?Python?中的日期和時間,一起來了解如何使用time和datetime模塊查找和修改日期和時間
    2022-10-10
  • 對Python閉包與延遲綁定的方法詳解

    對Python閉包與延遲綁定的方法詳解

    今天小編就為大家分享一篇對Python閉包與延遲綁定的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • tensorflow 獲取所有variable或tensor的name示例

    tensorflow 獲取所有variable或tensor的name示例

    今天小編就為大家分享一篇tensorflow 獲取所有variable或tensor的name示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python圖像處理之使用OpenCV檢測對象顏色

    Python圖像處理之使用OpenCV檢測對象顏色

    OpenCV顏色檢測只是一個起點,最終目標(biāo)是最終使用Python?3代碼在視頻流幀中定位彩色元素位置,下面這篇文章主要給大家介紹了關(guān)于Python圖像處理之使用OpenCV檢測對象顏色的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • pandas 數(shù)據(jù)實現(xiàn)行間計算的方法

    pandas 數(shù)據(jù)實現(xiàn)行間計算的方法

    今天小編就為大家分享一篇pandas 數(shù)據(jù)實現(xiàn)行間計算的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python判斷列表字典字符串元組是否存在某個值或者空值(多種方法)

    python判斷列表字典字符串元組是否存在某個值或者空值(多種方法)

    這篇文章主要介紹了python判斷列表字典字符串元組是否存在某個值或者空值,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-02-02
  • 使用IPython來操作Docker容器的入門指引

    使用IPython來操作Docker容器的入門指引

    這篇文章主要介紹了使用IPython來操作Docker容器的方法,包括一些基本的搭建和連接,主要依靠docker-py模塊,需要的朋友可以參考下
    2015-04-04

最新評論