日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET Core+Selenium+Github+Travis CI =amp;gt; SiteHistory

發(fā)布時間:2023/12/4 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET Core+Selenium+Github+Travis CI =amp;gt; SiteHistory 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

總是三分鐘熱度的我折騰了一個可以每天自動截取指定網(wǎng)站頁面并保存到Github的項目SiteHistory,感覺挺好(每次都這樣 frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 25px; height: 26px;">)。
想知道YouTube今天的首頁長啥樣么?點此查看
想知道YouTube2017年8月31日的首頁長啥樣么?改天再點開
想為你的網(wǎng)站增加訪客么?不要問我,我不知道。

那年那站那樣

伴隨著時間,記錄著網(wǎng)站的歷史
記錄下網(wǎng)站現(xiàn)在的樣子,待那年今日
那一年,那個網(wǎng)站,是那個樣子
項目地址:https://github.com/yimogit/SiteHistory

技術(shù)棧

  • .NET Core:.NET Core 是.NET Framework的新一代版本,具有跨平臺 (Windows、Mac OSX、Linux) 能力的應(yīng)用程序開發(fā)框架 (Application Framework)。

  • Selenium:一個用于Web應(yīng)用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。結(jié)合phantomjs等驅(qū)動可以實現(xiàn)頁面自動化。

  • Github:一個面向開源及私有軟件項目的托管平臺,因為只支持git 作為唯一的版本庫格式進行托管,故名GitHub,又名GayHub

  • Travis CI:采用yaml格式配置,簡潔清新的開源持續(xù)集成構(gòu)建項目。

    我將其用來打包vue的純工具站點metools,以及.net core程序(SiteHistory)
    啥,還不會?戳這里→→使用travis-ci自動部署github上的項目

  • 項目構(gòu)建思路

  • 運行程序,傳入名稱 網(wǎng)址 如:dotnet run baidu https://www.baidu.com

  • 創(chuàng)建一個phanomjs無頭瀏覽器:?IWebDriver driver = new PhantomJSDriver();

  • 在瀏覽器中打開傳入網(wǎng)站:driver.Navigate().GoToUrl(sitePage);

  • 執(zhí)行js使其滾動到底部,觸發(fā)懶加載,等待網(wǎng)頁圖片加載
    js int waitTime=10; var myScript = @"var ymtimer=setInterval(function(){ if (document.body.scrollHeight - 700 < document.body.scrollTop){ window.scroll(0, document.body.scrollHeight) clearInterval(ymtimer); return; } window.scroll(0, document.body.scrollTop + 700) } ," + waitTime * 1000 / 10 + ");"; //10s中從頭部滾動到底部 ((IJavaScriptExecutor)driver).ExecuteScript(myScript); //等待滾動完畢,圖片也差不多能加載完閉 System.Threading.Thread.Sleep(1200 * waitTime);

  • 開始截圖:((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("baidu.com",ScreenshotImageFormat.Jpeg)

  • 拼接文本寫入Readme.MD,Index.html

  • 關(guān)閉無頭瀏覽器,程序結(jié)束driver.Quit()

  • 項目文件預(yù)覽

    Program.cs加起來就一百多行代碼,完整Program.cs代碼請戳這里

    程序運行

  • 下載phantomjs,設(shè)置環(huán)境變量(Travis CI環(huán)境提供PhantomJS預(yù)裝)

  • 安裝.net core2.0 SDK

  • 執(zhí)行命令:dotnet run 參數(shù)1[名稱] 參數(shù)2[網(wǎng)頁鏈接] 參數(shù)3[圖片格式] 參數(shù)4[等待時間] 參數(shù)5[保存目錄] 參數(shù)6[可以執(zhí)行一些js]

  • dotnet run baidu https://www.baidu.com/

    保存[https://www.baidu.com]頁面的截圖名稱為[baidu.jpg]

  • dotnet run baidu https://www.baidu.com/ png

    指定圖片類型為png

  • dotnet run baidu https://www.baidu.com/ jpg 20

    加載完畢后等待20s后截圖(圖片加載或網(wǎng)站速度過慢)

  • dotnet run baidu https://www.baidu.com/ jpg 10 download-test

    下載的圖片保存到download-test文件夾下

  • dotnet run baidu https://www.baidu.com/ jpg 10 download-test "document.body.innerHTML='test'

    加載完畢后執(zhí)行一段js

  • 使用Travis CI?時的?.travis.yml配置

    若使用Travis CI 集成 ,要新增網(wǎng)站截圖項,則在travis.yml中script節(jié)點下添加命令即可

    附Travis CI的環(huán)境變量配置圖,具體戳此文章

    # 語言為scharp,系統(tǒng)為ubuntu14.04(代號trusty),.netcore 版本2.0 # Travis CI提供 phantomjs預(yù)裝 language: csharp dist: trusty dotnet: 2.0.0# mono:latest Travis CI默認(rèn)會安裝mono,測試發(fā)現(xiàn)若不安裝mono,Travis CI會在程序截圖時報錯 # 打印組件版本 before_install:- dotnet --version- phantomjs --versionscript:- dotnet restore- dotnet run ip http://1212.ip138.com/ic.asp png - dotnet run acfun http://www.acfun.cn/ jpg 20- dotnet run bilibili https://www.bilibili.com jpg 20- dotnet run youtube https://www.youtube.com jpg 20- dotnet run google https://www.google.com# 將截圖提交到 ${P_BRANCH} 分支中(gh-pages) # export abc='date +%Y%m%d' 獲取年月日 # 腳本將根據(jù)時間創(chuàng)建新分支 `gh-pages_20170901`,并更新gh-pages分支 # after_script:- cd download- git init- git config user.name "${U_NAME}"- git config user.email "${U_EMAIL}"- git add .- git commit -m "add imgs"- git remote add orginimgs "https://${GH_TOKEN}@${GH_REF}"- export current_date='date +%Y%m%d'- echo "current_date:$($current_date)"- git push --force --quiet orginimgs master:gh-pages- git push --force --quiet orginimgs master:gh-pages_$($current_date)branches: ?only:- master

    總結(jié)

  • 測試發(fā)現(xiàn)IP地址每次都會發(fā)生變化,引發(fā)無限遐想~

  • Linux下獲取年月日字符串
    設(shè)置:export current_date='date +%Y%m%d'
    輸出:echo "current_date:$($current_date)"

  • .net core使用Selenium需要引入Nuget包為:CoreCompat.Selenium.WebDriver

  • 配置中的變量按照此文章配置即可
    親測搭配travis-ci食用最佳,Fork之后,前往travis-ci配置即可?參閱文章:使用travis-ci自動部署github上的項目
    歡迎分享值得記錄的網(wǎng)站。

    相關(guān)文章:?

    • dotnet使用Selenium執(zhí)行自動化任務(wù)

    原文地址:http://www.cnblogs.com/morang/p/7455992.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

    總結(jié)

    以上是生活随笔為你收集整理的.NET Core+Selenium+Github+Travis CI =amp;gt; SiteHistory的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。