[房產交易數據分析](1) 基礎設施建設

分類:技術 時間:2016-10-18

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引入。

lt;dependencygt;
lt;groupIdgt;us.codecraftlt;/groupIdgt;
lt;artifactIdgt;webmagic-corelt;/artifactIdgt;
lt;versiongt;0.5.3lt;/versiongt;
lt;/dependencygt;
lt;dependencygt;
lt;groupIdgt;us.codecraftlt;/groupIdgt;
lt;artifactIdgt;webmagic-extensionlt;/artifactIdgt;
lt;versiongt;0.5.3lt;/versiongt;
lt;/dependencygt;

另外,如果你需要爬的網站數量比較多,我推薦下面的組織方式:

  1. 每個網站一個單獨的Processor,
  2. 不同的URL在Processor的process() 方法之中通過工廠方法進行區分。

具體可以參考GitHub 上面的源碼: https://github.com/RangerWolf/house-stat

3. 使用JFinal的ActiveRecordPlugin 存儲數據。

之前一直使用JFinal做Web后臺,使用起來比較方便,體現在:

  • 無需任何xml配置文檔
  • 自帶DB ORM類似的存儲類庫
  • 結構簡單,層次概念清晰

因此在這個項目之中,拋棄了之前我自己寫的入庫框架,轉而使用Jfinal。

首先還是需要通過Maven引入相關的類庫:

lt;!-- https://mvnrepository.com/artifact/com.jfinal/jfinal --gt;
lt;dependencygt;
lt;groupIdgt;com.jfinallt;/groupIdgt;
lt;artifactIdgt;jfinallt;/artifactIdgt;
lt;versiongt;2.2lt;/versiongt;
lt;/dependencygt;
lt;!-- https://mvnrepository.com/artifact/com.alibaba/druid --gt;
lt;dependencygt;
lt;groupIdgt;com.alibabalt;/groupIdgt;
lt;artifactIdgt;druidlt;/artifactIdgt;
lt;versiongt;1.0.19lt;/versiongt;
lt;/dependencygt;

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

private void startDB() {
 druidPlugin = new DruidPlugin(
 quot;jdbc:mysql://10.64.34.44/flyml_house_stat?characterEncoding=utf-8quot;, 
 quot;skyaiduserquot;, quot;skyaid8.6quot;);
druidPlugin.start();
activeRecordPlugin = new ActiveRecordPlugin(druidPlugin);
activeRecordPlugin.addMapping(quot;njhouse_simple_summaryquot;, NJHouseSimpleSummary.class);
activeRecordPlugin.addMapping(quot;njhouse_supply_summaryquot;, NJHouseSupplySummary.class);
activeRecordPlugin.addMapping(quot;njhouse_yearly_deal_statquot;, 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 瀏覽器自帶的提取工具就比較好用:

至此,基礎設施已經基本上構建完畢,下面可以真實的去構建一個可以實際運行的爬蟲啦

本文為原創文章,轉載請注明 出處:http://www.flyml.net


Tags: 數據分析 JFinal WebMagic

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


ads
ads

相關文章
ads

相關文章

ad