老是三分鐘熱度的我折騰了一個能夠天天自動截取指定網站頁面並保存到Github的項目SiteHistory,感受挺好(每次都這樣)。
想知道YouTube今天的首頁長啥樣麼?點此查看
想知道YouTube2017年8月31日的首頁長啥樣麼?改天再點開
想爲你的網站增長訪客麼?不要問我,我不知道。html
伴隨着時間,記錄着網站的歷史
記錄下網站如今的樣子,待那年今日
那一年,那個網站,是那個樣子
項目地址:https://github.com/yimogit/SiteHistoryvue
.NET Core
:.NET Core 是.NET Framework的新一代版本,具備跨平臺 (Windows、Mac OSX、Linux) 能力的應用程序開發框架 (Application Framework)。Selenium
:一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。結合phantomjs等驅動能夠實現頁面自動化。Github
:一個面向開源及私有軟件項目的託管平臺,由於只支持git 做爲惟一的版本庫格式進行託管,故名GitHub,又名GayHubTravis CI
:採用yaml格式配置,簡潔清新的開源持續集成構建項目。我將其用來打包vue的純工具站點
metools
,以及.net core程序(SiteHistory
)
啥,還不會?戳這裏→→使用travis-ci自動部署github上的項目git
dotnet run baidu https://www.baidu.com
IWebDriver driver = new PhantomJSDriver();
driver.Navigate().GoToUrl(sitePage);
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)
driver.Quit()
Program.cs加起來就一百多行代碼,完整Program.cs代碼請戳這裏
github
dotnet run 參數1[名稱] 參數2[網頁連接] 參數3[圖片格式] 參數4[等待時間] 參數5[保存目錄] 參數6[能夠執行一些js]
dotnet run baidu https://www.baidu.com/
保存[https://www.baidu.com]頁面的截圖名稱爲[baidu.jpg]ubuntu
dotnet run baidu https://www.baidu.com/ png
指定圖片類型爲
png
windows
dotnet run baidu https://www.baidu.com/ jpg 20
加載完畢後等待20s後截圖(圖片加載或網站速度過慢)瀏覽器
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'
加載完畢後執行一段js工具
若使用Travis CI 集成 ,要新增網站截圖項,則在travis.yml中script節點下添加命令便可
附Travis CI
的環境變量配置圖,具體戳此文章測試
# 語言爲scharp,系統爲ubuntu14.04(代號trusty),.netcore 版本2.0 # Travis CI提供 phantomjs預裝 language: csharp dist: trusty dotnet: 2.0.0 # mono:latest Travis CI默認會安裝mono,測試發現若不安裝mono,Travis CI會在程序截圖時報錯 # 打印組件版本 before_install: - dotnet --version - phantomjs --version script: - 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' 獲取年月日 # 腳本將根據時間建立新分支 `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
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上的項目 歡迎分享值得記錄的網站。