AJax网络爬虫设计与实现

AJax网络爬虫设计与实现

关键字:
网络爬虫 网络蜘蛛 搜索引擎 ajax JavaScript 数据采集 webspider
  传统意义上的网络爬虫是不解析JavaScript生成的内容的,所以JavaScript+ajax生成的内容对于传统的搜索引擎很不友好,不利于SEO。

  本例子使用winForm编程中的WebBrowser控件来加载页面,并解析页面内容导入的JavaScript文件生成的页面内容,获取body的innerHTML,这样就不用害怕网络爬虫抓取不到ajax或者JavaScript动态生成的内容。对于要采集一些用JavaScript+ajax动态生成的网页,此例子可作为参考。不过最终要采集需要的数据,还得自己用正则表达式或者其他方法来分析采集下来的html代码,获取对自己有用的数据。
  
  由于使用b/s方法的iframe也可以实现上面的内容加载并解析,但由于浏览器存在跨域的安全问题,获取iframe中的内容时会出现安全问题,所以采用winForm编程。

  最近看到的一片文章说Google爬虫即将同时解析JavaScript或者ajax生成的内容,不知道是否真实。详细参考下面的文章。
  Google蜘蛛运行网页中JS和CSS样式


下面是本示例中核心代码
+展开
-C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace AjaxSpider
{
    public partial class main : Form
    {
        public main()
        {
            InitializeComponent();
            wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(onDocumentLoaded);
        }
        private void onDocumentLoaded(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            WebBrowser wb = sender as WebBrowser;
            if (wb != null) txtHTML.Text = wb.Document.Body.InnerHtml;
            btnDown.Enabled = true;
            btnDown.Text = "下载";
        }
        private void btnDown_Click(object sender, EventArgs e)
        {
            if (txtUrl.Text == "" || (!txtUrl.Text.StartsWith("http://") && !txtUrl.Text.StartsWith("https://")))
            {
                MessageBox.Show("请输入正确的URL地址!""提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtUrl.Select();
            }
            else
            {
                btnDown.Text = "正在解析页面...";
                btnDown.Enabled = false;
                wb.Navigate(txtUrl.Text);
            }
        }
    }
}

示例代码下载地址:Ajax WebSplider网络爬虫

加支付宝好友偷能量挖...


原创文章,转载请注明出处:AJax网络爬虫设计与实现

评论(0)Web开发网
阅读(226)喜欢(0)Asp.Net/C#/WCF