每年暑假老师放假,大量的网络培训,研修就开始了,好像看不到尽头,课程还是不错的,值得一听,放假家里事多,但是总不能,整天坐到电脑旁吧。为了解放双手,写了几行代码,和大家交流。
一、首先安装谷歌浏览器,本代码是.net框架,c#实现,用到了两个东西Nuget包
1、HtmlAgilityPack
2、Selenium
二、首先用xpath获取节点
[C#] 纯文本查看 复制代码 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var ns = doc.DocumentNode.SelectNodes("/html/body/app-root/layout-pro/div/nz-sider/div/div/div/ul/li[4]/div[2]/ul/li/a");
三、循环节点内列表,获取xpath进行点击
[Asm] 纯文本查看 复制代码 foreach (var n in ns) { webDriver.FindElement(By.XPath(n.XPath)).Click();
}
四、切换浏览器标签,定位听课视频页
[C#] 纯文本查看 复制代码 foreach (var durl in webDriver.WindowHandles)
{
webDriver.SwitchTo().Window(durl);
var qurl = webDriver.Url;
if (qurl.Contains("learning"))
{
m = qurl;
break;
}
}
五、部分完整代码
[Asm] 纯文本查看 复制代码 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var ns = doc.DocumentNode.SelectNodes("/html/body/app-root/layout-pro/div/nz-sider/div/div/div/ul/li[4]/div[2]/ul/li/a");
foreach (var n in ns)
{
webDriver.FindElement(By.XPath(n.XPath)).Click();
foreach (var durl in webDriver.WindowHandles)
{
webDriver.SwitchTo().Window(durl);
var qurl = webDriver.Url;
if (qurl.Contains("learning"))
{
m = qurl;
break;
}
}
}
其实代码不复杂,主要利用爬虫插件HtmlAgilityPack获取网页上视频列表的xpath集合,然后利用循环点击打开视频也进行播放,如果遇到弹出,对网页的弹窗内容进行分析,来循环点击弹窗按钮关闭弹窗,继续听课
如果浏览器遇到标签切换可利用Selenium的谷歌浏览器插件进行切换和关闭,大家有空可以试一下,感谢和大家交流 |