网页源代码抓取工具(之前做项目要从一个网页中抓取某些特定信息(组图))
优采云 发布时间: 2022-01-10 14:20网页源代码抓取工具(之前做项目要从一个网页中抓取某些特定信息(组图))
首页>博客文章WebBrowser + HtmlPraser 抓取ajax网页源码
与py2021-11-12
简介 在我做一个项目之前,我想从一个网页中获取一些特定的信息。一开始我打算用java+HtmlPraser制作的结果。被抓的部分出不来。在研究了那个网页的源代码之后,我得出了一个结论。它是使用ajax技术隐藏一些信息的网页。只有当用户浏览页面时,才会显示这部分信息。然后想看看有没有一些可以模拟浏览的开源项目,但是找不到。无奈之下,只好切换到c#平台。经过高手指导,c#中的WebBrows" />
在做一个项目之前,我想从网页中获取一些特定的信息。一开始我打算用java+HtmlPraser来做结果。被抓的部分出不来。在研究了那个网页的源代码后,我得出的结论是,那个网页使用了ajax技术隐藏了部分信息。只有当用户浏览页面时,才会显示这部分信息。然后想看看有没有一些可以模拟浏览的开源项目,但是找不到。无奈之下,只好切换到c#平台。
经过专家指导,c#中的WebBrowser控件起到了模拟浏览器的作用,使用起来非常简单。
新建一个表单应用程序,在表单中添加一个WebBrowser控件,在控件的属性url中设置要解析的网页的url。必须填写
然后双击控件你会去一个
private void web_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)
看函数分析就知道这个函数是在控件加载完网页后执行的
也就是说,您需要在该函数中写入有关网页的信息。
一开始我也是直接在这个函数里写处理代码,但是发现信息被抓到但是只有一小部分
后来百度发现是因为这个控件其实设计的有一些不足。很多时候,收录动态加载的网页还没有完全打开。
web_DocumentCompleted()函数会开始执行,导致控件显示的页面源码与实际页面源码不一致
有一些解决方案,虽然没有完全解决,但是可以提高打开类ajax网页的完成度。
方法是
private void web_DocumentCompleted(object sender,WebBrowserDocumentCompletedEventArgs e)
{
if (web0.ReadyState == WebBrowserReadyState.Complete)
{
}
}
原理不是很清楚,但实验证明抓取目标数据量确实增加了。
所以如果你想捕获更多的数据,你可以使用定时器每隔一段时间解析网页,以增加捕获的数据量。
简单来说就是控制定时器和WebBrowser的Navigate方法的结合。
总结
以上就是WebBrowser+HtmlPraser为你爬取本站采集的ajax网页源码的全部内容。希望文章可以帮助大家解决WebBrowser+HtmlPraser爬取ajax网页源码时遇到的程序开发问题。
如果你觉得本站网站的内容还不错,欢迎向程序员朋友推荐本站网站。