RFCrawler网络爬虫用法说明

来源:互联网 发布:java创建日志 编辑:程序博客网 时间:2024/05/16 19:14

RfCrawler网络爬虫是一款基于.net开发的开源网络爬虫,只需开发者编写少量代码即可实现功能较为完善的网络爬虫,帮助你实现网络数据采集等功能。


RFCrawler下载地址:

http://download.csdn.net/detail/flx_2028/8720493


第一步:创建项目,添加引用

将RFCrawler.rar中的dll解压出来,添加到项目中,如图:

 

第二步:引入命名空间Com.Rf.Core,创建类MyCrawler继承自Crawler

如图:

 

第三步:重写Visit方法

代码如下:


说明:

参数oPage表示当前在爬取的页面,其中属性Url表示当前页面的地址。

我们可以根据页面地址的规则判断是否将该地址加入继续爬取列表(这里也可以用正则表达式来判断),如果是则用AddToVisit方法将url加入列表。

 

再用规则去判断该地址是否是需要提取内容的页面,如果是则用Select方法提取网页内容。再将提取的内容存放到数据库或者文件中。

(Select的用法可参考jsoup中文API)

 

第四步:运行爬虫


在构造函数中传入爬取网站的原始链接(这里以人民网时政模块为例);设置编码(默认为GB2312);最后用StartThread方法开始爬取,参数表示开启的后台线程数(理论上数字越大爬取越快,但是会受限于网速。比如以200KB/S的网速同时打开100个网页,那每个网页打开的时间肯定会很长,这里需要使用者权衡。)。也可以用Stop方法停止运行。

 

 

 

 

完整代码如下:

usingSystem;

usingSystem.Data;

 

usingCom.Rf.Core;

 

namespaceRfCrawlerTest

{

    public class MyCrawler : Crawler

    {

        public MyCrawler(string url)

            : base(url)

        {

 

        }

 

        public override void Visit(Page oPage)

        {

            if(oPage.Url.Contains("http://politics.people.com.cn/"))

                AddToVisit(oPage.Url);

 

            if(oPage.Url.Contains("http://politics.people.com.cn/n/"))

            {

                try

                {

                    string title = oPage.Select("h1[id=p_title]").Text;

 

                    Database oDatabase = newDatabase();

                    string sql = "select *from tb_News where Url='" + oPage.Url + "'";

                    DataTable dt =oDatabase.SelectDataSet(sql).Tables[0];

 

                    if (dt.Rows.Count == 0)

                    {

                        sql = "insert intotb_News(title,url) values('" + title + "','" + oPage.Url +"')";

                        oDatabase.Execute(sql);

                    }

                }

                catch

                { }

            }

        }

    }

 

 

 

    class Program

    {

        static void Main(string[] args)

        {

 

            MyCrawler crawler = newMyCrawler("http://politics.people.com.cn/");

           crawler.SetEncoding("GB2312");

            crawler.StartThread(3);

 

            Console.Read();

        }

 

    }

}


0 0
原创粉丝点击