这是我的第一个爬虫项目,也是我第一次接触c# 窗体程序。
我的需求:页面中有音频文件但是它时单个下载的,用户需要一个一个的去点击下载按钮进行下载,我的目的:根据用户的需求筛选出相关的数据,然后我拿到页面上用户筛选的数据,实现批量下载,然后将下载并存放到用户本地文件夹中,然后对下载下来的这些文件进行播放。
主要用到的插件有:CefSharp HtmlAgilityPack
将浏览器页面嵌入到winForm中
将web页面嵌入到winForm的界面中
//窗体load时执行下面方法
private void Form1_Load(object sender, EventArgs e)
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
webbrowser = new ChromiumWebBrowser(“要嵌入的web地址”);
webbrowser.Dock = DockStyle.Fill;
this.pnlTop.Controls.Add(webbrowser);
webbrowser.FrameLoadEnd += Webbrowser_FrameLoadEnd;//注册窗体加载事件onload
webbrowser.FrameLoadEnd += SetCookie;
}
下面是获取web页面的url地址做相应的操作
private void Webbrowser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
if (e.Frame.IsMain)
{
if (e.Frame.Url == "页面的url地址(不同的地址处理不同的事情)")
{
string listPage = "想要跳转的页面地址";
string js = "window.location.href='" + listPage + "';";
this.webbrowser.ExecuteScriptAsync(js);//将这段js添加到web页面中,它会执行此跳转
return;
}
if (e.Frame.Url == "url1")
{
string html = "";
e.Frame.GetSourceAsync().ContinueWith(task =>//异步执行
{
html = task.Result;//抓取到的页面,然后分析页面的代码结构拿到想要的数据
String filePath = SavaProcess(html);
});
return;
}
if (e.Frame.Url == "url2")
{
e.Frame.GetSourceAsync().ContinueWith(task =>
{
string htmlDom = task.Result;