废话不多说,直接开干!

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

请看文档代码!

//打开控制台
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"; //数据库服务器,可省略默认为localhostuid = "root";//用户名,可省略默认为rootpwd = "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.whttpimport winimport consolevar 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,svar 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 = "//"+sspaten=".*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 = "//"+ss2paten2=".*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 = "//"+ss3paten2=".*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,svar 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.whttpimport winimport consolekwd = 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,skwd="螺蛳粉"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==3mainForm.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,svar 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 = "//"+sspaten=".*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 = "//"+ss2paten2=".*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 = "//"+ss3paten2=".*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一周!虽然是被大众嘲笑抛弃语言,但是耐心研究还是有收获!资质愚钝,还需努力!

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

aardio学习笔记-在线程中调用数据相关推荐

  1. SAP MM学习笔记13-SAP系统中的数据种类-(1)系统数据

    SAP中有三种数据, 1,系统数据 2,配置数据(Customizing Data) 3,应用数据(Application Data) 1,系统数据 ABAP数据字典,程序集(Program Libr ...

  2. asp.net学习笔记·将数据库中的数据保存在EXCEL文件中

    提取数据库中的数据,将其保存在EXCEL文件中,并提供下载. 在一般处理程序中将数据库数据保存在EXCEL文件中的代码 using System; using System.Collections.G ...

  3. C++学习笔记-----在一个构造函数中调用另一个构造函数

    在构造函数中调用另一个构造函数如果一不注意就会有无限递归的危险,而且构造函数的参数的不同也决定了调用的不同,所以特意总结了一下哪些形式的调用时允许的: 首先假设构造函数调用时参数都是外部的变量,而不是 ...

  4. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  5. java学习笔记15--多线程编程基础2

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...

  6. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  7. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  8. 【theano-windows】学习笔记十一——theano中与神经网络相关函数

    前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客[theano-windows]学习笔记五--theano中张量部分函数提到的张量的定义和基本运算外, 还有 ...

  9. 【theano-windows】学习笔记六——theano中的循环函数scan

    前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于 ...

最新文章

  1. [SCOI2007]降雨量
  2. Smarty中的ob_start问题
  3. HTML5的little,HTML 5
  4. 浅谈浏览器多进程与JS线程 1
  5. java届的黄埔军校_法学界的“黄埔军校”:拒绝与985合并,是其最大遗憾
  6. 【elasticsearch】 基于_version进行乐观锁并发控制
  7. 15个使用 CSS3 制作的漂亮作品展示网站
  8. ArcGIS10.8安装(附最新<2022年10月29日>下载地址)
  9. shell 脚本返回上级目录_cmd返回上级目录
  10. 今日头条 java笔试题_今日头条笔试第一题
  11. 无法启动程序因为计算机中丢失msvcr100,devenv.exe 系统错误无法启动此程序,因为计算机中丢失 MSVCR100.dll问题的解决办法...
  12. 复合函数的共轭函数例子
  13. 查看分区表linux,通过lsblk命令查看分区表
  14. MCDF-lab4中部分代码理解
  15. Nvme pcie有线千兆网卡
  16. 结巴(jieba)分词的使用-Java实现
  17. matlab 固有频率 振型,基于MATLAB语言多自由度振动系统固有频率及主振型计算分析.pdf...
  18. PGCrypto 加密组件使用
  19. Oracle数据库,建库建表
  20. java第三次试验报告

热门文章

  1. 法国ICD|开启我人生辉煌的下一站
  2. Construct2 第一次制作的小游戏
  3. wdlinux mysql 日志_mysql,_mysql自动关闭,日志看不懂,希望大神解读下,mysql - phpStudy...
  4. c语言中的0、‘0’、‘\0’、“0”及NULL
  5. 信息学 计算机奥林匹克竞赛辅导,震惊!信息学奥赛好处竟然这么多
  6. pip安装pytorch 0.4.1
  7. Java SE8 流 最全总结
  8. mac安装php的mongodb扩展报错:No such file or directory autom4te: /usr/bin/m4 failed with exit status: 1...
  9. STM32H747AGI6技术、STM32H747AII6规格、STM32H747BGT6产品概述
  10. Excel:VBA数据分析-找到含某个关键字的单元格就标黄(五)