很多网页的内容包括图片是用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来控制并不对