剑客
关注科技互联网

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

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

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址