最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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 四種客戶端語(yǔ)言。如果你使用 Python,則只需要在命令行里輸入“sudo easy_install selenium”并回車,即可安裝 selenium 的 Python 版本的客戶端支持。

以 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.fzitv.net")

注意到,上面的代碼中,我并沒(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è)線程同時(shí)截圖)。這樣看來(lái),使用 Selenium 來(lái)給頁(yè)面截圖似乎是一個(gè)不錯(cuò)的選擇。

相關(guān)文章

  • 詳解Python中通用工具類與異常處理

    詳解Python中通用工具類與異常處理

    在Python開(kāi)發(fā)中,編寫(xiě)可重用的工具類和通用的異常處理機(jī)制是提高代碼質(zhì)量和開(kāi)發(fā)效率的關(guān)鍵,本文將介紹如何將特定的異常類改寫(xiě)為更通用的ValidationException,并創(chuàng)建一個(gè)通用的工具類Utils,需要的可以參考下
    2024-12-12
  • Python簡(jiǎn)明入門教程

    Python簡(jiǎn)明入門教程

    這篇文章主要介紹了Python簡(jiǎn)明入門教程,較為詳細(xì)的分析了Python的基本概念及語(yǔ)法基礎(chǔ),有助于Python初學(xué)者更好的掌握Python的基本語(yǔ)法與使用技巧,需要的朋友可以參考下
    2015-08-08
  • 談?wù)凱ython:為什么類中的私有屬性可以在外部賦值并訪問(wèn)

    談?wù)凱ython:為什么類中的私有屬性可以在外部賦值并訪問(wèn)

    這篇文章主要介紹了談?wù)凱ython:為什么類中的私有屬性可以在外部賦值并訪問(wèn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python如何獲取網(wǎng)絡(luò)數(shù)據(jù)

    python如何獲取網(wǎng)絡(luò)數(shù)據(jù)

    這篇文章主要介紹了python如何獲取網(wǎng)絡(luò)數(shù)據(jù),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-04-04
  • python類繼承用法實(shí)例分析

    python類繼承用法實(shí)例分析

    這篇文章主要介紹了python類繼承用法,實(shí)例分析了Python類的定義與類繼承的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-05-05
  • pyQt4實(shí)現(xiàn)俄羅斯方塊游戲

    pyQt4實(shí)現(xiàn)俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了pyQt4實(shí)現(xiàn)俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • 淺談pytorch、cuda、python的版本對(duì)齊問(wèn)題

    淺談pytorch、cuda、python的版本對(duì)齊問(wèn)題

    今天小編就為大家分享一篇淺談pytorch、cuda、python的版本對(duì)齊問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 使用Gitee自動(dòng)化部署python腳本的詳細(xì)過(guò)程

    使用Gitee自動(dòng)化部署python腳本的詳細(xì)過(guò)程

    小編最近在自學(xué)python,在學(xué)習(xí)過(guò)程中有好多意向不到的收獲,真的很開(kāi)心,今天重點(diǎn)給大家分享使用Gitee自動(dòng)化部署python腳本的詳細(xì)過(guò)程,包括安裝環(huán)境搭建及一些注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • python中的IO流使用解讀

    python中的IO流使用解讀

    這篇文章主要介紹了python中的IO流使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • django使用LDAP驗(yàn)證的方法示例

    django使用LDAP驗(yàn)證的方法示例

    這篇文章主要介紹了django使用LDAP驗(yàn)證的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論

孝昌县| 客服| 城步| 札达县| 澄迈县| 红原县| 略阳县| 萨嘎县| 通州区| 石渠县| 兰西县| 黑龙江省| 滨海县| 福建省| 凌海市| 汤阴县| 平泉县| 克东县| 海阳市| 大邑县| 房产| 永和县| 方山县| 高唐县| 颍上县| 耿马| 万宁市| 曲麻莱县| 陕西省| 屯留县| 达孜县| 万年县| 英超| 岑巩县| 双柏县| 湟中县| 黑龙江省| 遵义市| 呼玛县| 荆门市| 青浦区|