目的:收集北京餐馆的信息,建立一个中文数据库用作以后的分析。

 

资源:众多专业网站,http://www.dianping.com/(大众点评网,Unicode(UTF8) 编码)

                            http://www.bjdianping.com/(北京点评网,Chinese Simplified(GB2312)编码)

                            http://lianmeng.fantong.com/(饭桶网,Unicode(UTF8) 编码)

 

方法:第一步:趴网页;

        第二步:网页结构分析;

        第三步:导入数据库。

 

这里介绍一下怎么扒网页的,后续步骤以后一一奉上。

        static void Main(string[] args)
        {
            FileOperation fo = new FileOperation();
            String baseURL = "http://www.。。。.com/shop/";
        
            WebClient wc = new WebClient();
            string dstName = null;

            // 1001600 -- 3001600 left
            // 3001600 -- 3099433 finished
            for (int i = 3099433; i < 5000000; i++)
            {
                string URL = baseURL + i.ToString();
                dstName = @"D:\Data\dianping\" + i.ToString() + ".htm";
                Console.WriteLine(i.ToString());
                System.Threading.Thread.Sleep(250); 
                try
                {       
                    //Stream st = wc.OpenRead(URL);
                    wc.DownloadFile(URL, dstName);
                    
                }
                catch(Exception e)
                {
                    Console.WriteLine(e.Message);
                    continue;
                }                   
            }
            Console.ReadLine();
        }

  

 

不难,但有2个需要注意的地方:

1.一定记得设置等待时间,大部分网站服务器都有阻断过高频繁访问网站的功能,我的ip一段就被封了1个小时,这还算幸运的,要是因此公司对外访问被封,那就是千古罪人了,所以扒网页这种事不是你一个人的事,一定注意安全。解决办法:一是写多线程任务,让不同的机器去扒,这样依然可以很快(但其实还是担心它自己会不会被荡掉);二,加点等待时间,由于本人没有多台电脑也不好发动群众,就只有加等待时间了,

System.Threading.

 

Thread.Sleep(500); 0.5秒。

2. 之前不是直接用的DownloadFile(adress,filename)的方法,而是用的stream读网页再存本地的方法。这就涉及到用什么编码方式读取和保存的事了,UTF8一般是默认设置,不会有太大问题,像“北京点评网”的网页编码就很诡异,GB2312,C#中就没有 ,自己也不想再外部添加了。所以果断放弃了扒他的网页。

 

3. 有的网页加载方式不一样,如“饭桶网”餐馆介绍的网页,是先加载的框架结构,在加载的里面的店面信息(这点你可以通过F5刷新时明显看到),所以哪怕我另存为网页后也没有我需要的店面信息。所以果断放过这个网站。

 

 

后来找了很久,找到一个不错的网站,各方面都挺好的,做得很不错。

这里本人珍重申明,下载下来的网页,只用于研究所用,不做商业用途,实验结束后会全部删去,谢谢。如该网站有疑问,请联系我本人v-xyang@microsoft.com

 

posted on 2010-11-27 21:39  CodingCrazy 小组  阅读(3059)  评论(0编辑  收藏  举报