[房产交易数据分析](1) 基础设施建设

0 引言 本小节主要介绍用到的主要使用了哪些技术,算是一个开场~ 真正做的东西,请看后续的文章 如果您对这方面正好并没有太多

0. 引言

本小节主要介绍用到的主要使用了哪些技术,算是一个开场~

真正做的东西,请看后续的文章

如果您对这方面正好并没有太多的经验,这篇文章是一个比较好的提示文档。注意:具体如何一步步的操作,还需要您自行到官网查找相关说明。

在后面的实际操作之中,还会用到其他的技术,会在后面相应的进行说明。

文章来源:http://www.flyml.net/2016/10/15/house-stat-basic-setup/

1. 选择爬虫框架

构建爬虫,首先要选择一个适合自己、使用称手的爬虫框架。

这方面笔者大力推荐基于Java的WebMagic. 官网: http://webmagic.io/ . 如果您的主力语言是Python, scrapy 也是一个非常成熟强大的爬虫框架。 但是个人感觉在易用性上面,WebMagic 还是要更甚一筹。

2. WebMagic 入门: 引入与实践方式

WebMagic的文档还是很丰富的。 中文文档地址: http://webmagic.io/docs/zh/

WebMagic 比较方便的引用方式还是通过maven引入。

<dependency>    <groupId>us.codecraft</groupId>    <artifactId>webmagic-core</artifactId>    <version>0.5.3</version></dependency><dependency>    <groupId>us.codecraft</groupId>    <artifactId>webmagic-extension</artifactId>    <version>0.5.3</version></dependency>

另外,如果你需要爬的网站数量比较多,我推荐下面的组织方式:

[房产交易数据分析](1) 基础设施建设

  1. 每个网站一个单独的Processor,
  2. 不同的URL在Processor的process() 方法之中通过工厂方法进行区分。

具体可以参考GitHub 上面的源码: https://github.com/RangerWolf/house-stat

3. 使用JFinal的ActiveRecordPlugin 存储数据。

之前一直使用JFinal做Web后台,使用起来比较方便,体现在:

  • 无需任何xml配置文档
  • 自带DB ORM类似的存储类库
  • 结构简单,层次概念清晰

因此在这个项目之中,抛弃了之前我自己写的入库框架,转而使用Jfinal。

首先还是需要通过Maven引入相关的类库:

<!-- https://mvnrepository.com/artifact/com.jfinal/jfinal --><dependency>    <groupId>com.jfinal</groupId>    <artifactId>jfinal</artifactId>    <version>2.2</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/druid --><dependency>    <groupId>com.alibaba</groupId>    <artifactId>druid</artifactId>    <version>1.0.19</version></dependency>

在Processor之中需要相应的startDB / stopDB

private void startDB() { druidPlugin = new DruidPlugin( "jdbc:mysql://10.64.34.44/flyml_house_stat?characterEncoding=utf-8", "skyaiduser", "skyaid8.6");    druidPlugin.start();    activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);    activeRecordPlugin.addMapping("njhouse_simple_summary", NJHouseSimpleSummary.class);    activeRecordPlugin.addMapping("njhouse_supply_summary", NJHouseSupplySummary.class);    activeRecordPlugin.addMapping("njhouse_yearly_deal_stat", NJHouseYearlyStat.class);    activeRecordPlugin.start();} private void stopDB() { activeRecordPlugin.stop(); activeRecordPlugin = null; druidPlugin.stop(); druidPlugin = null;}

只需要在爬虫启动开始StartDB在爬虫结束之后stopDB即可。

4. 分析页面,抽取CSS selector

当需要从页面上面提取数据的时候,xpath 与 css selector 都是非常常用的技术。 个人更偏向于css selector.  Chrome 浏览器自带的提取工具就比较好用:

[房产交易数据分析](1) 基础设施建设

至此,基础设施已经基本上构建完毕,下面可以真实的去构建一个可以实际运行的爬虫啦

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

未登录用户
全部评论0
到底啦