巨大的网站刮擦/抓取GAS:错误 - 参数太大:值

时间:2015-04-21 12:24:39

标签: javascript google-apps-script

我已经完成了一个抓取脚本,通过抓取逐个抓取任何网站(要输入的网址)内页,抓取其他内部网址并继续获取所有网页并提取其纯文本(剥离的html)。请参阅my previouse回答。该脚本运行良好,我设法在其运行时间接近某个限制时自动停止它,并且我也通过时间触发器重新启动它以继续执行。

作为一些持久性数据,我使用 ScriptCache ScriptProperties (对于小值变量)。

  • 在我按时间限制停止脚本之前,我在ScriptCache中保存了尚未处理的链接和已处理的链接。对于此join()数组链接到字符串变量:scriptCache.put('processed_urls', processed_urls.join(','))
  • 当我重新启动以下运行的脚本时,我会从ScriptCache中检索尚未处理的链接和已处理的链接。在这里,我宁愿split()将字符串缓存到数组中:processed_urls = scriptCache.get('processed_urls').split(',')

链接失败的链接数量可能很大,表明该值太大。 错误详细信息(来自自动电子邮件):

Start      Function     Error Message                Trigger            End
4/20/15 
12:57 PM    scrape   Argument too large:value 
                     (line 139, file "Code")        time-based    4/20/15 12:57PM

这一行:joined_links = links.join(',');

  

参数太大:值(第139行,文件“代码”)

由于站点链接的数量很大,要将数组转换为字符串,以便以下字符串具有出价值...当字符串值真正超过25K时会发生这种情况。

可能有什么出路?

此外,当谷歌文档太大,我把删除文本放在哪里时,与...交互的速度很慢?

1 个答案:

答案 0 :(得分:0)

脚本缓存(和属性)具有您达到的限制。而是将待处理链接列表存储为电子表格行(甚至是单个单元格)。您还可以将数据传播到更多缓存条目中,但也可以达到总数。要轻松传播,只需将缓存的值命名为“c1”“c2”等,直到找不到为止。