Archive for 2月, 2013
python版网页抓取器railgun
实在受困于主机资源,跑个java几百M的内存就去了。
所以用python重新写了一份railgun。
比java版的更简洁,去掉了一些用不上的部分。包括抓取后的全文索引和数据库mapping部分。
现在它只是一个简单的抓取框架了,一个python的简单抓取网页的工具。
可以让用python抓取网页更加方便,轻松+愉快。
使用方式详见里面的有个现有所有功能的demo
项目主页:
https://github.com/princehaku/pyrailgun
下载地址:
https://pypi.python.org/packages/source/P/PyRailgun/
也可以从pipi安装
https://pypi.python.org/pypi/PyRailgun
简单的使用说明:
怎么使用? 首先你需要创建一个对应站点的规则文件 比如testsite.yaml
你的所有抓取过程,解析规则,都是在yaml文件里面定义的
- action: main
- name: “vc动漫”
- subaction:
- – action: fetcher
- url: http://www.verycd.com/base/cartoon/page${1,1}${0,9}
- subaction:
- – action: parser
- rule: .entry_cover_list li
- subaction:
- – action: shell
- group: default
- subaction:
- – {action: parser, rule: ‘.entry_cover .cover_img’, setField: img}
- – {action: parser, rule: ‘a’, pos: 0, attr: href, setField: src}
- – {action: parser, strip: ‘true’, rule: ‘.entry_cover .score’, setField: score}
- – {action: parser, rule: ‘.bio a’, setField: dest}
- – action: fetcher
- url: http://www.verycd.com${#src}
- subaction:
- – {action: parser,strip: ‘true’, rule: ‘#contents_more’, setField: description}
规则差不多就像你上面看到的这些,demo里面也有几个特殊的
接下来就可以在代码里面使用它了,把它作为一个任务加入到railgun
- from railgun import RailGun
- railgun = RailGun()
- railgun.setTask(file(“testsite.yaml”));
- railgun.fire();
- nodes = railgun.getShells(‘default’)
- print nodes
你就可以得到一个包含了所有解析后数据的节点列表。
[{img:xxx,src:xxx,score:xxx,dest:xxx,description:xxx},{img:xxx,src:xxx,score:xxx,dest:xxx,description:xxx}]
接下来怎么使用他么就是你随意的事情老!