网站内容抓取(整理一下用到的知识点和关键部分代码学习方法 )

优采云 发布时间: 2022-01-18 01:28

  网站内容抓取(整理一下用到的知识点和关键部分代码学习方法

)

  组织一些最近的项目。总结几个用到的知识点和代码的关键部分,供大家学习交流。

  1、爬虫爬取网页内容信息。可以使用 System.Net.WebRequest 和 webclient 等类来处理。

  2、对于一些动态网页,链接信息是通过javascript动态生成的,以生成页面置信度。也可以分析传值的方式,把参数带入post(网站的大部分参数都是正则的)。如果不行,也可以使用webbrowser控件来模拟点击。或按值传递。

  以网站为例。

  部分代码如下:

  //使用浏览器访问指定的网页。 address 是网页地址

  private void Navigate(WebBrowser web,String address)

  {

  if (String.IsNullOrEmpty(address)) 返回;

  if (address.Equals("about:blank")) return;

  if (!address.StartsWith("http://")) 地址 = "http://" + 地址;

  试试

  {

  web.Navigate(new Uri(address));

  }

  捕获 (System.UriFormatException)

  {

  返回;

  }

  }

  由于需要爬取网页内容并在加载后提交参数,所以需要验证加载是否完成,即DocumentCompleted。在实际使用过程中,发现一个页面的加载过程中可能有多个DocumentCompleted,所以这里使用+1、-1方法来判断是否加载完成。

  首先,在formload中绑定页面加载事件。

   private void getCode3webBrowser_Load(object sender, EventArgs e)

{

string address = "http://www.aslan.com.cn/Code.aspx";

this.Navigate(webBrowser1, address);

webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser_Navigated);

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);

}

  并定义标志计数

   int count = 0;

  然后在每次导航后 +1 标记

  private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)

{

count++;

}

  在每个DocumentCompleted中给count-1,最后当count=0时,表示页面加载完毕。可以进行页面信息处理等操作。

<p> <p>    private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

        {

            count = count - 1;

            string eventTarget = "dg_Code$ctl24$ctl";

           

            if (0 == count && isComplete == false && j

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线