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;
另外,如果你需要爬的網站數量比較多,我推薦下面的組織方式:
- 每個網站一個單獨的Processor,
- 不同的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