[房产交易数据分析](2) 解析南京相关的数据

2016年10月15日 34210点热度 0人点赞 0条评论

笔者生活、工作在南京,因此首先想到如何抓取南京相关的数据。

1. 数据来源

百度搜索“南京房产交易数据”,发现查询结果还不错,第一条就是我们想要:

数据地址:http://www.njhouse.com.cn/index_tongji.php

经过不断的尝试,发现这个网站虽然看起来技术不咋地,但是数据还算是靠谱。

看起来下面这些数据值得我们去解释:

(1) 准实时交易统计数据

 

另外我们还可以从其他页面解析出其他的数据。比如:

(2)南京各个区的住宅类销售数据:

网页地址:http://www.njhouse.com.cn/index.php (注意:一定要带index.php 不然会被重定向到其他页面去啦)

还有其他的数据,可以根据你的需求进行相应的解析。

文章来源:http://www.flyml.net/2016/10/15/house-stat-parse-nanjing-data/

 

2. 构建WebMagic的Processor

 

(1) 创建Site对象并设置正确的编码参数

大概解释一下:

  1. 如果访问失败,会重试3次
  2. 如果需要访问多个页面,会暂停100毫秒
  3. 设置解析的字母编码为gb2312

在爬取目标页面的时候,如果出现乱码,常见的一个错误就是编码格式问题。我们在IDE之中创建项目,推荐的是UTF-8编码,比较通用。但是网上的页面,可能就会使用各种编码。那么我们如何查看对应页面的编码呢?

首先我们可以从网页源码来查看。 还是使用Chrome的开发者工具,F12.结果看下图:

 

显然,我们需要设置编码格式为GB2312.

但是有的网页源码是看不到这个的,比如我们想去解析今日销售排行榜(链接)的时候,可以使用下图的这种方法:

可以看到,content-type里面设置的编码格式为GBK.

因为GBK实际上是兼容GB2312的,因此我们也省事了,全部都是用GB2312

 

(2)调用相应的Jfinal数据存储插件

需要在Pom之中加入相应的依赖:

相应的代码:

(3)使用Chrome获取基础CSS selector

通过工具获取的css selector 一般只能针对单个元素,但是比如我们需要获取一个table之中的所有的td,就需要自行修改css selector的值了。

这是一个还不错的参考文档:http://www.w3school.com.cn/cssref/css_selectors.asp

在Chrom的Console tag之中可以直接测试css selector, 这也是我觉得css选择器相比xpath更方便的一个地方。可以使用下面两个函数

 

其他部分感觉并没有太需要说明的地方~

文章来源:http://www.flyml.net/2016/10/15/house-stat-parse-nanjing-data/

3. 启动爬虫

即:

  1. 需要爬取3个页面
  2. 只启用单线程爬虫

这个网站的访问速度还是很给力的。 跑一轮下来,也就几秒钟的时间。而且笔者目前发现这个网站似乎对爬虫还是很友好的 :)

请各位大神不要把这个网站搞垮就好~

 

本文为原创文章,转载请注明出处:http://www.flyml.net

RangerWolf

保持饥渴的专注,追求最佳的品质

文章评论