基于spark和kafka反爬虫技术【第三天】

10、lua相关知识

10.1 lua和idea的整合

1、 创建idea工程
2、下载emmylua插件
3、创建lua包并创建lua file
运行过程中可能出现的错误,没有配置lua.exe解析器
在这里插入图片描述
配置方式:
run —>Edit configgurations
在这里插入图片描述

10.2 lua数据类型与变量

Lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和table。
nil : 表示一个无效值,有点类似java的null
boolean: false和true
number: 双精度类型的实浮点数
string: 字符串,双引号和单引号都可表示
function: 函数
userdata: 任意存储在变量中的C数据结构
thread: 执行的独立路线,用于执行协同程序
table: 其实是一个关联数组,数组的索引可以是数字或者是字符串。
Lua 变量有三种类型:全局变量、局部变量、表中的域。
Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。
局部变量的作用域为从声明位置开始到所在语句块结束。
变量的默认值均为 nil。

10.3 lua 运算符

– 赋值运算符
– 算数运算符
– 关系运算符
– 逻辑运算符
– 其他运算符

参考lua菜鸟编程:https://www.runoob.com/lua/lua-tutorial.html

11 OpenResty入门案例

这里使用的openresty版本是1.13,content_by_lua 改成
了 content_by_lua_block;openresty 1.9.3.1 及以下版本,请使用 content_by_lua 命令
第一个案例:
1、在Nginx的配置文件nginx.cof中添加一下信息,然后重新执行nginx -s reload

location / {
           #root   html;
            #index  index.html index.htm;
            default_type text/html;
            content_by_lua_block {
           ngx.say("hello world")
        }

这里的location只能写一个,不然会报错,就直接用自带的location就行,把下面加进去即可

2、 我们也可以使用content_by_lua_file 来引入一个lua文件

 location / {
     #root   html;
     #index  index.html index.htm;
	default_type text/html;
	content_by_lua_file /opt/apps/openresty/nginx/conf/my.lua;
}

创建my.lua文件并输入如下代码:ngx.say(“hello nginx, hello lua”)

11.2获取http请求信息

获取uri参数

获取uri有两个方法:ngx.req.get_uri_args、ngx_req.get_post_args
举例:
– 获取get请求参数

local arg = ngx.req.get_uri_args()
for k,v in pairs(arg) do
   ngx.say("[GET ] key:", k, " v:", v);
end

– 获取post请求时 请求参数

ngx.req.read_body() -- 解析post参数之前一定要先读取 body
local arg = ngx.req.get_post_args()
for k,v in pairs(arg) do
   ngx.say("[POST] key:", k, " v:", v)
end

获取post请求是可以在线模拟
在这里插入图片描述

获取header

– 获取header

local headers = ngx.req.get_headers()  
for k,v in pairs(headers) do
   ngx.say("[header] name:", k, " v:", v)
   ngx.say("<br />")
end
获取body

– 获取body信息

local data = ngx.req.get_body_data()
ngx.say(data)

11.3 操作Redis

[hadoop@slave1 openresty]$ cd lualib/
[hadoop@slave1 lualib]$ mkdir luatest
[hadoop@slave1 luatest]$ vi  DemoRedistest.lua
local redis = require "resty.redis"
local red = redis:new()

red:set_timeout(1000) -- 1 sec

local ok, err = red:connect("192.168.140.151", 6379)
if not ok then
	ngx.say("failed to connect: ", err)
	return
end

-- 请注意这里 auth 的调用过程,如果Redis设置密码,才需要写这些代码
local count
count, err = red:get_reused_times()
if 0 == count then
	ok, err = red:auth("admin")
	if not ok then
		ngx.say("failed to auth: ", err)
		return
	end
elseif err then
	ngx.say("failed to get reused times: ", err)
	return
end

ok, err = red:set("qf", "good school")

if not ok then
	ngx.say("failed to set qf: ", err)
	return
end

ngx.say("set result: ", ok)

-- 连接池大小是100个,并且设置最大的空闲时间是 10 秒
local ok, err = red:set_keepalive(10000, 100)
if not ok then
	ngx.say("failed to set keepalive: ", err)
	return
end

然后修改nginx下面的nginx.conf文件
在这里插入图片描述
重新加载 sbin/nginx -s reload 刷新slave1:80网页
结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值