You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
webmagic/webmagic-scripts
yihua.huang a08d8cb167 update verion 11 years ago
..
src remove some test 11 years ago
README.md update the script 11 years ago
deploy.sh update the script 11 years ago
pom.xml update verion 11 years ago

README.md

webmagic-scripts

目标:

使得可以用简单脚本的方式编写爬虫,从而为一些常用场景提供可流通的脚本。如果已经有人写好了脚本,那么你直接使用就可以了!

实例:

例如我需要抓github的仓库数据可以这样写一个脚本(javascript)

var name=xpath("//h1[@class='entry-title public']/strong/a/text()")
var readme=xpath("//div[@id='readme']/tidyText()")
var star=xpath("//ul[@class='pagehead-actions']/li[1]//a[@class='social-count js-social-count']/text()")
var fork=xpath("//ul[@class='pagehead-actions']/li[2]//a[@class='social-count']/text()")
var url=page.getUrl().toString()
if (name!=null){
    println(name)
    println(readme)
    println(star)
    println(url)
}

urls("(https://github\\.com/\\w+/\\w+)")
urls("(https://github\\.com/\\w+)")

然后使用webmagic加载并启动它无需下载依赖、编写代码、执行的过程。目前已经有控制台版本请下载http://code4craft.qiniudn.com/webmagic-console.tar.gz

解压后,使用以下命令执行:

java -jar -Dfile.encoding='utf-8' webmagic-console.jar -f 脚本文件名 [-l 语言默认是javascript] [-t 线程数] [-s 抓取间隔,毫秒] url1 url2 …

例如对于github这个脚本我可以这样执行

java -jar -Dfile.encoding='utf-8' webmagic-console.jar -f github.js -t 2 -s 0 https://github.com/code4craft

目前这部分使用Java的ScriptEngine机制完成。

语言:

选用javascript是因为用户面比较广。目前还支持ruby语言选用ruby是因为ruby的语法编写DSL更简洁

name= xpath "//h1[@class='entry-title public']/strong/a/text()"
readme = xpath "//div[@id='readme']/tidyText()"
star = xpath "//ul[@class='pagehead-actions']/li[1]//a[@class='social-count js-social-count']/text()"
fork = xpath "//ul[@class='pagehead-actions']/li[2]//a[@class='social-count']/text()"
url=$page.getUrl().toString()

puts name,readme,star,fork,url unless name==nil

urls "(https://github\\.com/\\w+/\\w+)"
urls "(https://github\\.com/\\w+)"

多语言通过参数-l区分例如执行这个ruby脚本需要

java -jar -Dfile.encoding='utf-8' webmagic-console.jar -f github.rb -t2 -s0 -l ruby https://github.com/code4craft

这个功能目前仍在实验阶段。欢迎大家积极参与并提出意见。