最近想用lua+nginx做个web站点,因为想再熟悉一下lua程序,所以就一些很简单的几个页面,lua本来不是用来做web前端开发的,所以很多WEB上要的工具没有,需要自己造轮子。然后加载模板也就是个字符串替换,WEB地址:http://weather.04007.cn/ 功能就是每天自动抓取中国天气网的数据,存入redis,按温度排名,分省份,以及分城市。lua有一个开源的扩展:lua-resty-http, 本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
github地址:https://github.com/pintsized/lua-resty-http 本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
用起来很方便,此次用了其两个功能,一个是单个页面抓取。二是多页面并发抓取。速度很快。单页面抓取时使用httpc:request,多页面同时并发抓取使用httpc:request_pipeline。速度很快。 本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
local responses = httpc:request_pipeline({ {path = \"/b\"}, {path = \"/c\"}, {path = \"/d\"} ... }本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
单页面抓取时比较好处理,不过多页面,另外使用了一个扩展的xml解析程序:https://github.com/Cluain/Lua-Simple-XML-Parser 使用这个的时候一定要多注意对于多个相同子元素的解析结果处理:要使用如下。 本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
xml:children()[1]:name() == \"test\" xml:children()[1]:children()[2]:value() == \"eight\" xml:properties()[1] == {name = \"one\", value = \"two\"}我使用的时候就碰到报错:lua:68: attempt to index local \'citys\' (a function value) 都是因为对解析结果的误认为造成的。使用上面的children()方法来处理就OK。附个页面截图: 本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/190.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/190.html 未经许可,不得转载. 手机访问本页请扫描下方二维码:
|