用WPF+MongoDB开发房产信息收集器(1)

我相信,房子是现在压在众多国人肩上的最大负担。我也是其中一员,我也在关注房子。而我又是一个正在用Silverlight开发项目、正在学习MongoDB的程序员,所以,很自然的我想为我自己,也为众多在关注房子的朋友开发一个“房产信息采集器”。

房产信息采集器:

  1. 获取房产网站相应的二手房、一手房信息;
  2. 可以让用户自主选择需要下载的区域的房产信息;
  3. 可以过滤重复数据、虚假数据;
  4. 有新信息时可以提醒;
  5. 可以设置是否关注或不感兴趣某一楼盘、某一区域的楼盘;
  6. ......

今天主要实现了从网站下载、解析数据,并没有将数据保存到数据库。先上图:

要想从网站上获取房产信息首先要知道从哪里去下载、解析这些数据。

很简单,现在的每一个网站都有搜索功能,而搜索结果的都是分页的,这些分页都是有规律的,只要找到这个规律,源源不断的数据就有了。 当然,搜索结果的内容只是一个概况,如果要真正解析数据,还必须进入对应房产信息的页面再下载解析。 这些都没有什么技术的难点,就是需要去分析网站的html代码,有点烦而已。各位自己琢磨下就完全OK了。

这里推荐一个第三方解析下载Html的工具:Html Agility Pack 至于具体怎么用,CodePlex是的Demo我觉得已经说明的很清楚了,各位可以自己看下。

今天在用这个控件的时候遇到的几个问题跟大家分享下。

  1. 用Html Agility Pack来直接下载解析网站的时候会遇到中文乱码的问题。 我用的方法是用HttpWebRequest来下载网页的内容,返回一个Stream。
    1 HttpWebRequest req = WebRequest.Create(new Uri(url)) as HttpWebRequest; 
    2 req.Method = "GET";
    3 WebResponse rs = req.GetResponse();
    4 Stream rss = rs.GetResponseStream();
    5 return rss;
    然后再用HtmlAgilityPack。后面的解析都是使用HtmlAgilityPack进行的。
  2. XPath的路径问题,/开头的XPath路径表示是从根目录开始的。所以无论你想从一个已经选择好了的HtmlNode下获取其子节点,注意XPath不能用/开头。

今天只是开始,我会坚持下去,一直完成、完善这个工具的。如果各位有什么意见或者感觉需要添加的功能,在下感激不尽。

posted @ 2011-10-23 23:20  随风逝去(叶进)  阅读(2937)  评论(18编辑  收藏  举报
Free Web Counter
Free Web Counter