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

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

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

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ò)的選擇。

相關(guān)文章

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

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

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

    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ù)字的方法

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

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

    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
  • 對(duì)Python閉包與延遲綁定的方法詳解

    對(duì)Python閉包與延遲綁定的方法詳解

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

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

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

    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ì)算的方法

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

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

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

    使用IPython來(lái)操作Docker容器的入門(mén)指引

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

最新評(píng)論