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样式
下面是本示例中核心代码
示例代码下载地址:Ajax WebSplider网络爬虫
原创文章,转载请注明出处: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);
}
}
}
}
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网络爬虫设计与实现