Archive for the ‘pyrailgun’ tag
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}]
接下来怎么使用他么就是你随意的事情老!