使用c#实现爬虫技术

本文介绍了一个使用C#窗体程序开发的爬虫项目,目标是批量下载网页上的音频文件并实现播放。通过CefSharp和HtmlAgilityPack插件,将浏览器页面嵌入到WinForm中,获取音频文件URL并下载。同时,利用JavaScriptSerializer序列化和反序列化数据,存储和读取下载信息。最后,通过添加mediaPlayer组件实现音频播放。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是我的第一个爬虫项目,也是我第一次接触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;

        
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值