文档章节

想要在webmagic中自定义一门爬虫语言

黄亿华
 黄亿华
发布于 2013/09/04 15:17
字数 322
阅读 875
收藏 3

早在开始开发webmagic之前,就一直在思考,如何让爬虫的描述变得简单?

单条表达式描述一个抽取规则的诱惑是相当大的,这样子注解、配置、动态生成,都非常容易展开了。有个朋友做过一个管理后台,就是指定一个抽取字段,填一条XPath,一个抽取器就产生了。可惜XPath有些时候不那么灵活,还得用上正则这些东西。

自己写一个DSL始终太费劲,而XPath某种程度已经够好了。CSS Selector看起来很美,但是其语法的简单性使得描述一些复杂结构不太得心应手。

写了Xsoup之后,在这方面做了一点小小的尝试,Xsoup内置了一些XPath规范没有的函数,例如:regex()tidyText(),个人觉得都是非常有用的功能。

在跟@搜索小虫讨论之后,觉得在XPath里加入自定义函数功能,是个很酷的想法!这样虽然不标准,但是因为是自定义的,所以也不会跟XPath标准离得很远。如何规范自定义函数及编写,是个很有意思的问题。

© 著作权归作者所有

黄亿华

黄亿华

粉丝 2445
博文 131
码字总数 116344
作品 7
程序员
私信 提问
webmagic的设计机制及原理-如何开发一个Java爬虫

此文章是webmagic 0.1.0版的设计手册,后续版本的入门及用户手册请看这里:https://github.com/code4craft/webmagic/blob/master/user-manual.md 之前就有网友在博客里留言,觉得webmagic的实...

黄亿华
2013/07/20
67.8K
94
webmagic 0.2.0 发布,Java垂直爬虫框架

此次更新的主题是"方便"(之前的主题是"灵活")。 增加了webmagic-extension模块。 增加了注解方式支持,可以通过POJO+注解的方式编写一个爬虫,更符合Java开发习惯。以下是抓取oschina博客的完...

黄亿华
2013/08/12
5.1K
22
玩转webmagic代码之Scheduler

webmagic上线之后,因为灵活性很强,得到了一些爬虫老手的欢迎,但是对于新手来说可能稍微摸不着头脑,我的需求是这样子,什么模块化,什么灵活性,但是看了半天,我也不知道怎么解决我的问题...

黄亿华
2013/08/21
13.8K
10
初步框架方案

此项目核心分三块(爬虫引擎,数据存储,web界面以及restful api) 爬虫引擎 采用webmagic作为框架 webmagic的是一个无须配置、便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即...

OSC闲人
2016/01/22
3
0
WebMagic-Avalon之分布式实现方案

WebMagic之前具有基本的分布式功能,可以将一个Spider部署到多台机器上,并通过Redis来管理URL,达到多机合作抓取的目标。 我在WebMagic-Avalon里计划完成一个管理后台,通过这个后台可以新建...

黄亿华
2014/03/12
5.1K
19

没有更多内容

加载失败,请刷新页面

加载更多

75、GridFS

GridFS是MongoDB提供的用于持久化存储文件的模块,CMS使用Mongo DB存储数据,使用FGridFS可以快速集成开发。 工作原理: 在GridFS存储文件是将文件分块存储,文件会按照256KB的大小分割成多个...

lianbang_W
50分钟前
4
0
js bind 绑定this指向

本文转载于:专业的前端网站➱js bind 绑定this指向 1、示例代码 <!DOCTYPE html><html lang="zh"> <head> <meta charset="UTF-8" /> <title>bind函数绑定this指向......

前端老手
53分钟前
4
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
今天
4
0
深入vue-公司分享ppt

组件注册 全局注册 注册组件,传入一个扩展过的构造器 Vue.component('my-component', Vue.extend({/*...*/})) 注册组件,传入一个选项对象(自动调用Vue.extend) Vue.component('my-comp...

莫西摩西
今天
4
0
gitlab重置管理员密码

登录gitlab服务器 [root@localhost bin]# sudo gitlab-rails console productionLoading production environment (Rails 5.2.3)irb(main):001:0> u = User.where(email: 'admin@example.co......

King华仔o0
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部