c下面有个著名的curl,libcurl与lua绑在一起就是luacurl,在lua包里例子程序里有curltest.lua测试程序。抓取网页程序得依靠这个库。下面是搜的一段程序,注释是我加的。
curl = require "luacurl"
function get_html(url, c)
local result = { }
if c == nil then
c = curl.new()
end
c:setopt(curl.OPT_URL, url)
c:setopt(curl.OPT_WRITEDATA, result)
c:setopt(curl.OPT_WRITEFUNCTION, function(tab, buffer) --call back函数,必须有
table.insert(tab, buffer) --tab参数即为result,参考http://luacurl.luaforge.net/
return #buffer
end)
local ok = c:perform()
return ok, table.concat(result) --此table非上一个table,作用域不同
end
ok, html = get_html("http://www.baidu.com/")
if ok then
print (html)
end
curl = require "luacurl"
function get_html(url, c)
local result = { }
if c == nil then
c = curl.new()
end
c:setopt(curl.OPT_URL, url)
c:setopt(curl.OPT_WRITEDATA, result)
c:setopt(curl.OPT_WRITEFUNCTION, function(tab, buffer) --call back函数,必须有
table.insert(tab, buffer) --tab参数即为result,参考http://luacurl.luaforge.net/
return #buffer
end)
local ok = c:perform()
return ok, table.concat(result) --此table非上一个table,作用域不同
end
ok, html = get_html("http://www.baidu.com/")
if ok then
print (html)
end