aardio学习笔记-在线程中调用数据

废话不多说,直接开干!
在这里插入图片描述

有个需求就是在线程中,获取数据
于是乎,线程只有匿名行数

请看文档代码!

//打开控制台
io.open()

//定义一个函数 
func = function(){ 
    return 1,2,3; //函数有多个返回值 
}
   
re,re2 = rget(2,func() ) //从第二个参数开始返回, re==2,re2==3
io.print( re,re2 ) 

re,re2 = rget(-1,func() ) //从倒数第一个参数开始返回, re==3,re2==null
io.print( re,re2 ) 

其中 re,re2 = rget(2,func() )调用匿名函数,终于找到线程中可以调用方法!这个aardiow文档说明!

谢谢这位作者!

文档地址

直接上我的完整代码

import win.ui;
import string;
import inet.whttp;
import console;
import fsys.file;
import fsys.dlg;
import thread.works
import io;
import com;
import com.excel;


import console;
import mysql.client;
//多线程管理器
import thread.manage

//创建线程管理器
manage = thread.manage(3)
//console.log("正在连接数据库服务器...");
thread.invoke( function()
        while(! thread.get("db4free.net:end")){
         io.stdout.write(">");sleep(100);
    }  
)

var dbMysql,err = mysql.client(
    server = "127.0.0.1"; //数据库服务器,可省略默认为localhost
    uid = "root";//用户名,可省略默认为root
    pwd = "root";  
);

thread.set("db4free.net:end",true)
//console.clearScreen ();
if(!dbMysql){
    console.log("连接数据库失败",err);
    console.pause();
    return;
}

//选择数据库
dbMysql.selectDb("test")
/*DSG{{*/
mainForm = win.form(text="小鸡助手 ";right=799;bottom=599)
mainForm.add(
btnInsert={cls="button";text="导入";left=600;top=24;right=704;bottom=56;z=4};
btn_select_file={cls="button";text="选择文件";left=464;top=24;right=584;bottom=56;z=6};
button={cls="button";text="获取数据";left=357;top=136;right=437;bottom=168;z=1};
button2={cls="button";text="添加关键词";left=208;top=134;right=312;bottom=166;z=7};
button3={cls="button";text="导出";left=475;top=136;right=555;bottom=168;z=8};
button4={cls="button";text="确定";left=458;top=86;right=538;bottom=115;z=12};
button5={cls="button";text="清除";left=596;top=84;right=679;bottom=117;z=13};
button6={cls="button";text="获取导出";left=583;top=135;right=703;bottom=170;z=14};
combobox={cls="combobox";left=69;top=90;right=172;bottom=116;edge=1;hscroll=1;items={};mode="dropdownlist";vscroll=1;z=9};
combobox2={cls="combobox";left=183;top=89;right=287;bottom=115;edge=1;hscroll=1;items={};mode="dropdownlist";vscroll=1;z=10};
combobox3={cls="combobox";left=297;top=89;right=404;bottom=115;edge=1;hscroll=1;items={};mode="dropdownlist";vscroll=1;z=11};
edit={cls="edit";text="螺蛳粉";left=88;top=139;right=179;bottom=167;edge=1;multiline=1;z=3};
edit2={cls="edit";left=16;top=24;right=424;bottom=56;edge=1;z=5};
listview={cls="listview";left=104;top=224;right=640;bottom=504;bgcolor=12632256;border=1;edge=1;vscroll=1;z=2}
)
/*}}*/

mainForm.button6.oncommand = function(id,event){
	//mainForm.msgbox( mainForm.button6.text );
	
	
}
mainForm.button5.oncommand = function(id,event){
	mainForm.listview.clear();
	
	
}
mainForm.listview.insertColumn("序号",50) 
mainForm.listview.insertColumn("关键词",100) 
mainForm.listview.insertColumn("数量",100)
mainForm.listview.insertColumn("第一评论",100)
mainForm.listview.insertColumn("第二评论",100)
mainForm.listview.insertColumn("第三评论",100)
//mainForm.listview.insertColumn("价格1",100) 
var num=0;
var filepath;

function addItem(str){
	num++;
	mainForm.listview.addItem( { 
			text={num;str;"0"} 
		})
}
function getResult(kwd){
		import inet.whttp
		import win
		import console
		var http = inet.whttp("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0");
		var url,s
		var count=mainForm.listview.count;//拿到listview数据条数
		for(i=1;count;1){
        kwd=mainForm.listview.getItemText(i,2);//拿到关键词 这列数据  
       
        url='https://search.jd.com/Search?keyword='+kwd+'&enc=utf-8&wtype=1&click=1&qrst=1&rt=1&stop=1&vt=2&wq='++kwd; 
        s = http.get(url); 
        
		i2,j2 = string.find(s ,"在京东找到了");
		substr = string.sub(s,i2,i2+36)
		//console.log(i,j,substr,"件"++kwd++"的类")
		i2,j2,v = string.find(substr ,"(\d+)");
		
        mainForm.listview.setItemText(kwd++v,i,3)
        mainForm.listview.setItemText(v,i,3)
        ii2,jj2,vv = string.find(s ,"search000014_log");
        
        substrs = string.sub(s,ii2,ii2+100)
        
        i22,j22,vv = string.find(substrs ,"(\d+),");
        //console.log(substrs)
   		i23,j23,vv2 = string.find(substrs ,",(\d+),");
   		
   		i33,j33,vv3 = string.find(substrs ,vv2++",(\d+),");
   		url1 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv+'&callback=jQuery1982868&_=1592352931024'
   		ss = http.get(url1);
   		str = "//"+ss
   		
   		paten=".*CommentCount.*?(\d+),"
		var m,m2=string.match(str,paten)
		//console.log(m)
		patens=".*?SkuId.*?(\d+),"
		var mm,mm2=string.match(str,patens)
		url2 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv2+'&callback=jQuery1982868&_=1592352931024'
   		ss2 = http.get(url2);
   		str2 = "//"+ss2
   		
   		paten2=".*CommentCount.*?(\d+),"
		var mm222,m22=string.match(str2,paten)
		
		patens=".*?SkuId.*?(\d+),"
		var mmm,mm22=string.match(str2,patens)
		url3 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv3+'&callback=jQuery1982868&_=1592352931024'
   		ss3 = http.get(url3);
   		str3 = "//"+ss3
   		
   		paten2=".*CommentCount.*?(\d+),"
		var mm333,m33=string.match(str3,paten)
		//console.log(mm33)
		patens=".*?SkuId.*?(\d+),"
		var mmm3,mm33=string.match(str3,patens)
	
        mainForm.listview.setItemText(m,i,4)
		
        mainForm.listview.setItemText(mm222,i,5)
		
        mainForm.listview.setItemText(mm333,i,6)
		
       
        
        //csv++= kwd+','++v+'\r\n'; //累加数据到csv   
         
    }
}



function getNumber(kwd,obj){



	import console;
	import thread.works;
	import thread.command;
	
	//使用thread.command也是一样,要等待比较长时间才输出
	var listener = thread.command();
	listener.logs = function(txt){
	
    	console.log(txt);
	}
	console.log(tostring(time())++"    start")
		var useagents={
		"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; InfoPath.3; rv:11.0) like Gecko";
		"Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0"
		}
		useagents[5]="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0";
		useagents[6]="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0";
		useagents[3]="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0";
		useagents[4]="Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0";

		var http = inet.whttp(useagents[3])
		var url,s
		var count=mainForm.listview.count;//拿到listview数据条数

	threadfun = function (arg){
	
    		import thread.command;
			//随机时间模拟网络请求
			math.randomize();
			var tn=math.random(100,2000);
			sleep(tn);
			//thread.command.logs( getResult);
			import inet.whttp
			import win
			import console
			kwd = tostring(arg)
			var http = inet.whttp("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0");
			var url,s
			kwd="螺蛳粉"
			url='https://search.jd.com/Search?keyword='+kwd+'&enc=utf-8&wtype=1&click=1&qrst=1&rt=1&stop=1&vt=2&wq='++kwd; 
			s = http.get(url); 
			
			i2,j2 = string.find(s ,"在京东找到了");
			
			ii2,jj2,vvv = string.find(s ,"search000014_log");
			
			substrs = string.sub(s,ii2,ii2+100)
			
			i22,j22,vv = string.find(substrs ,"(\d+),");
			
			thread.command.logs(tostring(time())++'\t'++"螺蛳粉"++'\t'++vv);
			return 12,vv;//函数有多个返回值 
			
			
   	
    	//希望每次return都能立即通知到外部并输出
	}
	var downTask = thread.works(5,threadfun,0);
	
	for(i=1;count;1){
	 	arg=mainForm.listview.getItemText(i,2);//拿到关键词 这列数据  
    	downTask.push(arg);
    	
	}
	
	
re,re2 = rget(1,threadfun() ) //从第二个参数开始返回, re==2,re2==3
 mainForm.listview.setItemText(re2,1,4)	
//io.print( re,re2 ) 


	
}


var csv="关键词,数量,第一评论,第二评论,第三评论"+'\r\n'
mainForm.button.oncommand = function(id,event){

	var kwd='连衣裙';
	console.log(kwd)
	getNumber(kwd,obj)
	
         

}

mainForm.btn_select_file.oncommand = function(id,event){
	filepath = fsys.dlg.open()//打开文件夹选取窗口,并返回所选择的文件夹的路径
    mainForm.edit2.text=filepath
}

mainForm.btnInsert.oncommand = function(id,event){
   
	fullpath =assert( io.exist( filepath ) ,"文件不存在" )
    tempfile = io.open(fullpath)
   
	line = tempfile.read();//读取下一行
	//console.log(line)

    //console.log(fullpath)
    var nu = 0;
	while( line ) {	
	nu ++;	
    
   	bb=string.fromto(line,936,65001);
   	
   	ex = string.split(bb,",");
 //console.log(ex[1])
   	//console.log(table.unpack(ex))
   	//io.print(table.unpack(ex));
   	
    var box = {p1=ex[2];p2=ex[3];p3=ex[4];key=ex[1]};

	
   	if(ex[2] !='' &&ex[2]!='一级类目'){
   		addCombobox(ex[2]);
   		if(ex[3] !='' &&ex[3]!='二级类目'){
   			addCombobox2(ex[3]);
   			if(ex[4] != ''&&ex[4]!='三级类目'){
   	 			addCombobox3(ex[4]);
   			}
   		}
   		
   	}
  
   	

     	num++;
		mainForm.listview.addItem( { 
			text={num;ex[1];"0"} 
		})
	
	
	
	
    	line = tempfile.read();//读取下一行
	}

    
}

mainForm.button2.oncommand = function(id,event){

    addItem(mainForm.edit.text)
}

mainForm.button3.oncommand = function(id,event){
		
		var http = inet.whttp("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0");
		var url,s
		
		var count=mainForm.listview.count;//拿到listview数据条数
		
 		for(i=1;count;1){
 		
        	//test1=mainForm.listview.getItemText(i,1);//拿到测试1 这列数据
        	kwd=mainForm.listview.getItemText(i,2);//拿到关键词 这列数据  
        	//console.log(kwd)
   	
        	
         	url='https://search.jd.com/Search?keyword='+kwd+'&enc=utf-8&wtype=1&click=1&qrst=1&rt=1&stop=1&vt=2&wq='++kwd; 
        	s = http.get(url); 
        	
			i2,j2 = string.find(s ,"在京东找到了");
			substr = string.sub(s,i2,i2+36)
			//console.log(i,j,substr,"件"++kwd++"的类")
			i2,j2,v = string.find(substr ,"(\d+)");
			
       	
        	mainForm.listview.setItemText(v,i,3)
        	ii2,jj2,vv = string.find(s ,"search000014_log");
        	
        	substrs = string.sub(s,ii2,ii2+100)
        	
        	i22,j22,vv = string.find(substrs ,"(\d+),");
        	//console.log(substrs)
   			i23,j23,vv2 = string.find(substrs ,",(\d+),");
   			
   			i33,j33,vv3 = string.find(substrs ,vv2++",(\d+),");
   			url1 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv+'&callback=jQuery1982868&_=1592352931024'
   			ss = http.get(url1);
   			str = "//"+ss
   			
   			paten=".*CommentCount.*?(\d+),"
			var m,m2=string.match(str,paten)
			//console.log(m)
			patens=".*?SkuId.*?(\d+),"
			var mm,mm2=string.match(str,patens)
			url2 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv2+'&callback=jQuery1982868&_=1592352931024'
   			ss2 = http.get(url2);
   			str2 = "//"+ss2
   			
   			paten2=".*CommentCount.*?(\d+),"
			var mm222,m22=string.match(str2,paten)
			
			patens=".*?SkuId.*?(\d+),"
			var mmm,mm22=string.match(str2,patens)
			url3 ='https://club.jd.com/comment/productCommentSummaries.action?referenceIds='+vv3+'&callback=jQuery1982868&_=1592352931024'
   			ss3 = http.get(url3);
   			str3 = "//"+ss3
   			
   			paten2=".*CommentCount.*?(\d+),"
			var mm333,m33=string.match(str3,paten)
			//console.log(mm33)
			patens=".*?SkuId.*?(\d+),"
			var mmm3,mm33=string.match(str3,patens)
		
        	mainForm.listview.setItemText(m,i,4)
			
        	mainForm.listview.setItemText(mm222,i,5)
			
        	mainForm.listview.setItemText(mm333,i,6)
			
			
			
        	
        	
        	
        	
       	
        	csv++= kwd+','+v+','+m+','+mm222+','+mm333+'\r\n'; //累加数据到csv  
        	sleep(100) 
		
      		var filePath=fsys.getCurDir();//获取你操作的路径
	
        	if(filePath){
            	string.save(filePath+"/"+"test"+'.csv',csv)
            	win.msgbox("导出到"++filePath+"test"+'.csv')
        	}
       }
}

mainForm.combobox.oncommand = function(id,event){
	//mainForm.combobox.clear();
  	var result = dbMysql.query("SELECT level1 FROM `cmf_role1` where 1 limit 1,7000");
		for  level1 in result.each(){
       			mainForm.combobox.add(level1)
       			
    		}
		mainForm.combobox2.clear();
	
}
mainForm.combobox2.oncommand = function(id,event){

	
	datas = mainForm.combobox.text;
	mainForm.combobox3.clear();
   	var result = dbMysql.query("SELECT level2 FROM `cmf_role1` where level1='"+datas+"' limit 1,7000");
		for  level2 in result.each(){
       			mainForm.combobox2.add(level2)
       			
    		}
	
}
mainForm.combobox3.oncommand = function(id,event){
		
		datas2 = mainForm.combobox2.text;
		
   		var result = dbMysql.query("SELECT level3 FROM `cmf_role1` where level2='"+datas2+"' limit 1,7000");
		for  level3 in result.each(){
       			mainForm.combobox3.add(level3)
    		}
  
	
}






mainForm.button4.oncommand = function(id,event){
	mainForm.listview.clear();
	datas = mainForm.combobox.text;
	
	datas2 = mainForm.combobox2.text;
	datas3 = mainForm.combobox3.text;
	if(datas !="请选择"){
			if(datas !="请选择"&&datas2!="请选择"&&datas3!="请选择"&&datas2!=""&&datas3!=""){
			//console.log(123)
		
			//查询数据并返回记录集
    		var result = dbMysql.query("SELECT  name FROM `cmf_role1` where level1='"+datas+"' and level2='"+datas2+"' and level3='"+datas3+"'");
		
		
   				for  name in result.each(){
       					mainForm.listview.addItem( { 
							text={num;name;"0"} 
						})
    				}
    			return 
		
			}
			if(datas !="请选择"&&datas2!="请选择"&&datas2!=""){
			
			//console.log(12)
				var result = dbMysql.query("SELECT  name FROM `cmf_role1` where level1='"+datas+"' and level2='"+datas2+"'");
				for  name in result.each(){
       					mainForm.listview.addItem( { 
							text={num;name;"0"} 
						})
    				}
    		return
			
			}

			var result = dbMysql.query("SELECT name FROM `cmf_role1` where level1='"+datas+"'");
			//console.log(11)
			for  name in result.each(){
       				mainForm.listview.addItem( { 
						text={num;name;"0"} 
					})
    			}
	
	}
	 
	
}





function addCombobox(obj){
	mainForm.combobox.add(obj);
}
function addCombobox2(obj){
	mainForm.combobox2.add(obj);
}
function addCombobox3(obj){
	mainForm.combobox3.add(obj);
}
//默认显示项设置
mainForm.combobox.add("请选择")

mainForm.combobox.selectString("请选择")//查找并默认选中
mainForm.combobox2.add("请选择")

mainForm.combobox2.selectString("请选择")//查找并默认选中

mainForm.combobox3.add("请选择")
mainForm.combobox3.selectString("请选择")//查找并默认选中

//mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();

效果图

在这里插入图片描述

总结:刚接触aardio一周!虽然是被大众嘲笑抛弃语言,但是耐心研究还是有收获!资质愚钝,还需努力!

以上代码希望能帮助需要的老铁!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值