C#:用WebBrowser获取JS动态加载以后的页面代码并保存图片

本文介绍如何使用C#的WebBrowser控件获取JS动态加载后的完整页面源码,并滚动页面使图片加载,然后保存图片到本地。通过分析网页结构,找到图片元素并滚动到其可视区域,避免频繁请求导致IP被封。利用剪贴板API实现图片的保存,需要注意剪贴板可能与其他应用冲突。该方法适用于处理大量图片加载的网页。

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

很多网页的内容包括图片是用JS或Jquery动态加载的,用Webbrowser直接获得的源码是没有参考价值的,而JS加载后含所有element的代码很难获取的,起码笔者搜索了一圈下来看到的方法都几乎没有使用价值。

笔者这里分享一种解决方案,随便找个网页会动态加载内容的,不难发现需要加载的内容需要你滚动页面,视野范围内的内容就会动态加载,于是乎,办法就来了。

首先,你还必须先研究一下你需要抓取的网站的内容构造,比如笔者需要抓取的网页共有100张图片,并且需要页面滚动到图片位置这些图片才会加载。于是先用普通浏览器等加载完右击页面选检查,分析得到这些图片的class里面包含title,下面就可以根据这个来操作了。在webBrowser1_DocumentCompleted也就是加载完之后(注意并不是js也加载完),获取当前页面所有元素并存储在docall当中,然后开启Timer1。

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            currentEleIndex = 0;
            docAll = webBrowser1.Document.All;
            this.timer1.Enabled = true;
        }


在Timer1里面,根据上面的分析我们遍历所有元素,找到class包含title的图片元素并滚动到此元素,这时候js就会执行了,这里有一句scrollcount++ % 5 == 0来控制并不对

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值