用WPF+MongoDB开发房产信息收集器(1)
我相信,房子是现在压在众多国人肩上的最大负担。我也是其中一员,我也在关注房子。而我又是一个正在用Silverlight开发项目、正在学习MongoDB的程序员,所以,很自然的我想为我自己,也为众多在关注房子的朋友开发一个“房产信息采集器”。
房产信息采集器:
- 获取房产网站相应的二手房、一手房信息;
- 可以让用户自主选择需要下载的区域的房产信息;
- 可以过滤重复数据、虚假数据;
- 有新信息时可以提醒;
- 可以设置是否关注或不感兴趣某一楼盘、某一区域的楼盘;
- ......
今天主要实现了从网站下载、解析数据,并没有将数据保存到数据库。先上图:
要想从网站上获取房产信息首先要知道从哪里去下载、解析这些数据。
很简单,现在的每一个网站都有搜索功能,而搜索结果的都是分页的,这些分页都是有规律的,只要找到这个规律,源源不断的数据就有了。 当然,搜索结果的内容只是一个概况,如果要真正解析数据,还必须进入对应房产信息的页面再下载解析。 这些都没有什么技术的难点,就是需要去分析网站的html代码,有点烦而已。各位自己琢磨下就完全OK了。
这里推荐一个第三方解析下载Html的工具:Html Agility Pack 至于具体怎么用,CodePlex是的Demo我觉得已经说明的很清楚了,各位可以自己看下。
今天在用这个控件的时候遇到的几个问题跟大家分享下。
- 用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; - XPath的路径问题,/开头的XPath路径表示是从根目录开始的。所以无论你想从一个已经选择好了的HtmlNode下获取其子节点,注意XPath不能用/开头。
今天只是开始,我会坚持下去,一直完成、完善这个工具的。如果各位有什么意见或者感觉需要添加的功能,在下感激不尽。
汇聚杭州外卖:外卖汇