最新国产好看的视频,伊人天堂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://m.fzitv.net")

注意到,上面的代碼中,我并沒有在打開頁(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開發(fā)中,編寫可重用的工具類和通用的異常處理機(jī)制是提高代碼質(zhì)量和開發(fā)效率的關(guān)鍵,本文將介紹如何將特定的異常類改寫為更通用的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ò)程中有好多意向不到的收獲,真的很開心,今天重點(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)證的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論

天祝| 吉安市| 万盛区| 平舆县| 长白| 莱阳市| 遵义县| 呼和浩特市| 紫云| 车致| 泾源县| 龙胜| 杂多县| 新巴尔虎右旗| 阳高县| 东港市| 临猗县| 衡水市| 山西省| 弥渡县| 两当县| 仲巴县| 永顺县| 阿拉善盟| 东港市| 遂溪县| 永丰县| 涞水县| 宾川县| 青田县| 新宾| 桂阳县| 西安市| 大宁县| 五台县| 台州市| 新丰县| 武威市| 原阳县| 荥阳市| 龙川县|