- Autoweb能让更好地分析HTML中的数据 你可以先使用Autoweb提供的DSL,针对HTML建模, 然后抓取数据
- 它能把你写的抓取程序分享出来, 他人可以通过命令行或者web界面使用
- baidu mp3 下载器
使用举例:
下载 齐秦的<外面的世界>, 在命令行输入:
autoweb baidump3 "外面的世界 齐秦" ~/Download/mp3
autoweb会自动搜索歌曲, 然后下载到指定的目录
安装前需要安装以下工具:
- curl
- wget
- hpricot
然后安装autoweb
gem install autoweb
用到了css3作为页面元素定位语法, 参照: css3语法介绍
Page.define "BaiduMp3" do |page|
# 搜索url模板
page.url_tpl = 'http://mp3.baidu.com/m?f=3&rf=idx&tn=baidump3&ct=134217728&lf=&rn=&word=#{word}&lm=-1&oq=go&rsp=1'
page.subs "result", "#Tbs tr" do |sub| # 定义名为"result"的"sub page"
sub.ele "music", "td:nth(1) a" #音乐链接
sub.ele "artist", "td:nth(2) a" #演唱者
sub.ele "album", "td:nth(3) a" #专辑
sub.ele "lyrics", "td:nth(5) a" #歌词
sub.ele "size", "td:nth(7)" #文件大小
sub.ele "format", "td:nth(8)" #文件格式
end
end
使用页面对象:
page = Page.pages["BaiduMp3"].parse(:word=>"大约在冬季")
first_mp3 = page["result"][1]
link = first_mp3["music"]
puts link[:href]
更多实际代码, 参考 commands/baidump3.rb
将以下代码放到autoweb/commands/helloworld.rb下
module Autoweb::Command
class HelloWorld < Base
def index
display "hello world!"
end
end
end
直接运行 autoweb helloworld 即可
更多实际代码, 参考 commands/help.rb 和 commands/baidump3.rb
将代码提交到autoweb
请直接fork github上的autoweb, 提交ticket以及push request即可
Autoweb released under the MIT license.