求问啥叫尝试去索引一个null值 (局部 'Table')

UIBot_32293 2019-5-8 2117

我想抓取猎聘的信息,应该是成功抓取下来了,但是写入excel表格时候总提示我


[09:31:50]文件uibot3752d30fdded06.task,第114行:[string "BasicLib"]:31: 尝试去索引一个null值 (局部 'Table')


我每行数据是想包括姓名、网址链接、公司名称和工作经历,姓名和网址链接是在搜索也抓取的,第一个人也顺利写入了,但是公司名称抓下来就总是写不进去了,在抓取数据部分输出公司名称(即value[2][1][1])的结果如下


[09:31:36]文件uibot3752d30fdded06.task,第95行:"公司名称:湖南中粮可口可乐饮料有限公司"


但是在写入excel时候就会出现上面的报错,工作经历也是类似的情况


求解!跪谢!

上传的附件:
最新回复 (5)
  • 哒哒 2019-5-8
    2

    114行的报错,请检查第110行。Excel.CellSetText(objExcelWorkBook,1,key,i+1,value[i])内各项参数是否有NULL。我怀疑是你的value[i]在这段遍历当中为NULL。
    请注意在你的遍历命令中value是局域变量,用过即毁。你在上一个遍历当中的value[2][1][1]是有效的,但在110行所在的遍历中value是一个全新的东西。跟上一个完全没关系。你想要使用上个遍历中的value需要在遍历中给它赋值到某个全局变量里,并在之后引用那个全局变量才行。

  • 哒哒 2019-5-8
    3

    你的脚本中存在太多的局域变量当全局变量用的现象。请重视这个问题。

  • 哒哒 2019-5-8
    4
    UB报错提示经常会报错行这个事,我早就跟官方提出来了。但是一直没解决,估计修复难度比较大。
  • UIBot_32293 2019-5-8
    5
    哒哒 114行的报错,请检查第110行。Excel.CellSetText(objExcelWorkBook,1,key,i+1,value[i])内各项参数是否有NULL。我怀疑是你的value[i]在这 ...
    哦我好像知道我的问题了,我在抓取数据部分用赋值修改value(在里面想加两个值),但是这个赋值显然没有体现在arrayData中。

    请问下怎么在遍历过程中修改arrayData的值啊?我把“令value的值为数组....”改成“令arradyData[key]的值为数组...”,但是不成功,从调试输出来看,每次赋值都给arrayData加了一个新数值,然后遍历又要遍历到这个新数值,就变成死循环了。
  • 哒哒 2019-5-8
    6

    .......我觉得你的问题主要出在对For Each遍历命令和UiElement.DataScrap数据抓取命令有误解。
    首先,你应该知道数据抓取出来的是数组,而不是字典。数组是从0开始索引,而字典是用键索引。虽然调用方式都是用[],但一个是用数字,另一个是用字符串。
    其次,For Each有两种遍历格式,一种是针对数组的一种是针对字典的。你的脚本中用了针对字典的遍历方式去遍历了数组。。emmm。倒也不是不能用,但是其索引键返回的不是从0开始而是从1开始,容易弄混。。。
    其次我再强调一下,在遍历命令中key, value 这两个为止的变量是局域变量,随用随消,你对这两个数值进行更改并不直接影响遍历对象arrayData本身。。。你真正需要操作的对象应该是arrayData,而不是key, value。

    另外,如果需要多次抓取,而且还需要保留之前的抓取结果,你就应该每次都创建一个新的数组标签,而不是只用arrayData这一个标签。。。

返回
发新帖