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引入。
1 2 3 4 5 6 7 8 9 10 |
<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> |
另外,如果你需要爬的网站数量比较多,我推荐下面的组织方式:
- 每个网站一个单独的Processor,
- 不同的URL在Processor的process() 方法之中通过工厂方法进行区分。
具体可以参考GitHub 上面的源码:https://github.com/RangerWolf/house-stat
3. 使用JFinal的ActiveRecordPlugin 存储数据。
之前一直使用JFinal做Web后台,使用起来比较方便,体现在:
- 无需任何xml配置文档
- 自带DB ORM类似的存储类库
- 结构简单,层次概念清晰
因此在这个项目之中,抛弃了之前我自己写的入库框架,转而使用Jfinal。
首先还是需要通过Maven引入相关的类库:
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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 浏览器自带的提取工具就比较好用:
至此,基础设施已经基本上构建完毕,下面可以真实的去构建一个可以实际运行的爬虫啦
本文为原创文章,转载请注明出处:http://www.flyml.net

文章评论