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

前言

总是三分钟热度的我折腾了一个可以每天自动截取指定网站页面并保存到Github的项目SiteHistory,感觉挺好(每次都这样 frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 25px; height: 26px;">)。
想知道YouTube今天的首页长啥样么?点此查看
想知道YouTube2017年8月31日的首页长啥样么?改天再点开
想为你的网站增加访客么?不要问我,我不知道。

那年那站那样

伴随着时间,记录着网站的历史
记录下网站现在的样子,待那年今日
那一年,那个网站,是那个样子
项目地址:https://github.com/yimogit/SiteHistory

技术栈

  1. .NET Core:.NET Core 是.NET Framework的新一代版本,具有跨平台 (Windows、Mac OSX、Linux) 能力的应用程序开发框架 (Application Framework)。

  2. Selenium:一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。结合phantomjs等驱动可以实现页面自动化。

  3. Github:一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub,又名GayHub

  4. Travis CI:采用yaml格式配置,简洁清新的开源持续集成构建项目。

    我将其用来打包vue的纯工具站点metools,以及.net core程序(SiteHistory)
    啥,还不会?戳这里→→使用travis-ci自动部署github上的项目

项目构建思路

  1. 运行程序,传入名称 网址 如:dotnet run baidu https://www.baidu.com

  2. 创建一个phanomjs无头浏览器: IWebDriver driver = new PhantomJSDriver();

  3. 在浏览器中打开传入网站:driver.Navigate().GoToUrl(sitePage);

  4. 执行js使其滚动到底部,触发懒加载,等待网页图片加载
    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);

  5. 开始截图:((ITakesScreenshot)driver).GetScreenshot().SaveAsFile("baidu.com",ScreenshotImageFormat.Jpeg)

  6. 拼接文本写入Readme.MD,Index.html

  7. 关闭无头浏览器,程序结束driver.Quit()

项目文件预览

Program.cs加起来就一百多行代码,完整Program.cs代码请戳这里

程序运行

  1. 下载phantomjs,设置环境变量(Travis CI环境提供PhantomJS预装)

  2. 安装.net core2.0 SDK

  3. 执行命令:dotnet run 参数1[名称] 参数2[网页链接] 参数3[图片格式] 参数4[等待时间] 参数5[保存目录] 参数6[可以执行一些js]

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

      保存[https://www.baidu.com]页面的截图名称为[baidu.jpg]

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

      指定图片类型为png

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

      加载完毕后等待20s后截图(图片加载或网站速度过慢)

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

      下载的图片保存到download-test文件夹下

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

      加载完毕后执行一段js

使用Travis CI 时的 .travis.yml配置

若使用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 --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' 获取年月日
# 脚本将根据时间创建新分支 `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

总结

  1. 测试发现IP地址每次都会发生变化,引发无限遐想~

  2. Linux下获取年月日字符串
    设置:export current_date='date +%Y%m%d'
    输出:echo "current_date:$($current_date)"

  3. .net core使用Selenium需要引入Nuget包为:CoreCompat.Selenium.WebDriver

配置中的变量按照此文章配置即可
亲测搭配travis-ci食用最佳,Fork之后,前往travis-ci配置即可 参阅文章:使用travis-ci自动部署github上的项目
欢迎分享值得记录的网站。

相关文章: 

  • dotnet使用Selenium执行自动化任务

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


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编语言(二十一)之数值交换与自增

输入两个数&#xff0c;如果第一个数为偶数第二个数为奇数&#xff0c;互换位置&#xff1b;如果两个数都是奇数&#xff0c;则两个数都加一 程序运行&#xff1a; 代码&#xff1a; datas segmentA dw 0 B dw 0a_string db 0ffh, 0 ,100h dup(?)b_string …

2021 程序媛跳槽记:学习计划篇(已收获字节等offer)

今天推荐的这篇文章是一位互联网程序媛写的跳槽日记。她本硕毕业于985计算机专业&#xff0c;先后就职于央企和BAT。这一篇就是她跳槽到互联网的学习笔记&#xff0c;希望能对大家有所帮助&#xff0c;感兴趣的读者也可以关注公众号&#xff0c;听听更多程序媛的故事~ 坦白说&a…

Orleans的集群构建

听闻一周前,微软公布了.net core2.0,以及各种各样的其他core2.0.大家都很兴奋.微妈的诚意真是满满的.这次开源势头让我感觉到了微妈的技术实力之雄厚.我在这里祝福C#越来越好.细心的人似乎发现Orleans在github中是和net core分在一起的.Orleans的2.0何时发布呀… 现在我们面对…

汇编语言(二十二)之统计减去奇数的个数

输入一个正数&#xff0c;该数减去递增奇数&#xff08;从1开始&#xff09;直至小于等于零为止&#xff0c;计算该数减去奇数的个数 程序运行&#xff1a; 代码&#xff1a; datas segmentNUM dw 17ANS dw 0NUM_string db 0ffh, 0 ,100 dup(?)inputNUM …

.NET Core 在程序集中集成Razor视图

前言 有时候&#xff0c;我们在开发一个程序集供其他项目引用的时候&#xff0c;可能需要对外输出一些HTML的结构数据。 还有一些情况我们可能开发的是一个中间件&#xff0c;这个中间件需要提供一些界面来对外展示数据或者是内部的一些程序的运行信息&#xff0c;这个时候我…

开学一月,可以自己玩自己做的游戏了!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”《趣味小游戏》的书已经讲完了&#xff0c;国庆假期给同学们布置了小游戏项目的任务&#xff0c;开学时检查了下&#xff0c;大部分做的还是挺不错的。有的同学超常发挥想象&#xff0…

汇编语言(二十三)之求一个数的补数

给定一个数&#xff0c;求该数的补数 程序运行&#xff1a; 代码&#xff1a; datas segmentNUM DB 12H,34H,56H,78H,9AH,0BCH,23H,45HDB 67H,89H,0DEH,13H,24H,35H,46H,57HN DB $-NUMoutputNUM db "orignal data NUM$"outputNUMC d…

ASP.NET Core 防止跨站请求伪造(XSRF\/CSRF)攻击

什么是反伪造攻击? 跨站点请求伪造&#xff08;也称为XSRF或CSRF&#xff0c;发音为see-surf&#xff09;是对Web托管应用程序的攻击&#xff0c;因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互。这种攻击是完全有可能的&#xff0c;因为Web浏览器会自动在每…

汇编语言(二十四)之输出n行星号

输入一个数n&#xff0c;输出n行星号 程序运行&#xff1a; 代码&#xff1a; datas segmentline_number_max_len db 0ffhline_number db 0, 100h dup(?)input_line_number_prompt db input line number:$output db 0dh,0…

家的味道,家的感觉!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”国庆期间回了一趟家&#xff0c;上次从家里出来还是2020年正月的时候&#xff0c;因为疫情的原因&#xff0c;21年过年没有回去……早早的就买下回家的票&#xff0c;以前回家一趟&…

POJ3889-Fractal Streets【分形,递归,分治】

正题 题目链接&#xff1a;http://poj.org/problem?id3889 大意 第一级城市为图一&#xff0c;然后每次扩展一级就将原本的城市复制3份&#xff0c;一份放上面&#xff0c;一份正旋90’放左上&#xff0c;一份逆序90’放左边&#xff0c;最后将4份的头和尾连起来&#xff0c;…

.NET Core 2将Visual Basic带到了Linux和macOS平台

Microsoft已经愈加接近将Visual Basic划为.NET Core平台上的一等公民。作为.NET Core 2发行版的一部分&#xff0c;VB开发者现在可以编写针对.NET Standard 2.0的控制台应用程序和类库&#xff0c;并且可以兼容多个平台。这就意味着运行在Windows上的可执行文件或者类库也能够运…

汇编语言(二十五)之成绩分段统计

已知一个班的成绩&#xff0c;进行60,70,80,90,100分段统计 程序运行&#xff1a; 代码&#xff1a; datas segmentstudents_number dw 10students dw 76,69,84,90,73,88,99,63,100,80s6 dw 0hs7 dw 0hs8 dw 0hs9 dw 0hs10 dw 0houtput…

感动哭了……

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”一大早就好多人送祝福&#xff0c;感动不已~下课看手机之后&#xff0c;看到手机上有条消息&#xff0c;是认识好多年好多年的大姐发的&#xff1a;“小穆&#xff0c;今天你生日&…

汇编语言(二十六)之自然数求和

输入一个数N&#xff0c;对1到N的所有自然数求和 程序运行&#xff1a; 代码&#xff1a; datas segmentN_string_max_length db 0ffhN_string db 0, 100h dup(?)N dw 0 sum dd 0 input db …

同学们,看看这里吧!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。恶”早上一进班&#xff0c;发现班内少了好几个学生&#xff0c;一想肯定是这几个熊孩子又违纪被王老师喊去了…自从这些孩子入学以来&#xff0c;大事小事不断的去犯&#xff0c;尤其是…

Oleans集群之Consul再解释

由于上周发文章的时候,我正要打算出门,所以就把写好的全部发出去了,有点仓促,虽然写了主线,但是这里还是需要再次解释一下. 我看到Orleans已经升级到了1.5.1了,(nuget上的官方发布),于是我就把Orleans升级到了1.5.1,顺便把net更改到了4.7版本. 再升级的时候,注意有几个依赖库…

别在被骗了!!!!!!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”今天&#xff0c;在身边又发生了一起诈骗案&#xff0c;被骗金额达5000余元在&#xff0c;就像佟老师说的一样&#xff0c;骗子可是一点人性都没有……大致的看了看具体细节&#xff0…

汇编语言(二十七)之身份证最后一位求和校验

输入身份证前十七位数字&#xff0c;输入18位身份证 程序运行&#xff1a; 代码&#xff1a; datas segmentw db 7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2y db 1,0,X,9,8,7,6,5,4,3,2ID_max_length db 18ID db 0, 19 dup(?)input …

C#使用Xamarin开发可移植移动应用进阶篇(8.打包生成安卓APK并精简大小),附源码

我记得,之前在写安卓方面的文章的时候,有人就问过我.Xamarin.Android为什么打包出来这么大?随便一个HelloWord就20-30MB? 嗯..今天我们就来解决这个问题.. 我们先从指定一个应用程序图标开始.. 1.指定应用程序图标 我们直接右键Android项目,属性.选择安卓清单.如下: 在Ap…