基于百度网盘网页端的批量分享工具

本文介绍了一个用于批量生成百度网盘分享链接的工具,该工具针对百度网盘网页端的更新进行了适配。由于新版百度网盘网页端采用动态加载数据,作者在调试过程中发现ChromiumWebBrowser插件的限制,不能使用async JS代码。通过在.NET代码中实现分页和延时取值,成功解决了问题,能够处理大量分享链接的生成。附带了核心代码和源码下载链接。
摘要由CSDN通过智能技术生成

以前工作中需要经常进行批量生成百度网盘分享链接,几年前写了一个自己用的批量生成链接工具,这几年没有使用这个功能,这两需要 使用才发现百度网盘网页端更新变化很大。新版百度网盘网页端采用动态获取分页数据生成table,数据会随着滚动条的移动更新为新数据,且旧数据不保留,所以需要动态将获取到的所有分页数据保存下来。经过修改可以正常使用了。

工具图片如下:
请添加图片描述

            Task<CefSharp.JavascriptResponse> task = webview.GetBrowser().MainFrame.EvaluateScriptAsync(js);
            task.Wait();

经过很长时间的调试,最终确定ChromiumWebBrowser这个插件在调用EvaluateScriptAsync进行异步取值时,传入的JS代码不能带有async标记,否则将获取不到网页返回的结果。
在百度网盘页面想一次性取得多页数据时,又不得不使用async和await进行延时取值。这个矛盾导致无法获取超过一个页面的结果。
最终的解决方法是,在.net代码中进行延时分页取值,结果分多次存入到.net代码的List中。
经测试,该程序可以顺利批量生成几百条甚至更多的百度网盘分享链接。

核心代码如下:

/// <summary>
        /// 由于新版百度网盘网页端采用动态获取分页数据生成表格,数据会随着滚动条的移动更新为新数据,且旧数据不保留
        /// 所以必须将获取到的所有分页数据保存下来
        /// </summary>
        private void fillTaskList() 
        {
            this.TaskList.Clear();

            try
            {
                bool has = true;
                while (has)
                {
                    has = false;
                    Thread.Sleep(1000);
                    object result = ExcuteJsScriptForResult(JavaScriptText.JsGetChoosedList);
                    if (result != null)
                    {
                        List<object> subtaskList = (List<object>)result;
                        foreach (object subtask in subtaskList)
                        {
                            if (!TaskList.Contains(subtask.ToString()))
                            {
                                TaskList.Add(subtask.ToString());
                                has = true;//取到最后一页时,不会有新增项,也不会执行这一句。
                            }
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }


  /// <summary>
        /// 开始批量分享
        /// </summary>
        private void StartBatShare()
        {
            // this.ShareDataList.Clear();

            this.fillTaskList();

 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值