Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 重复尝试后,importxml无法获取url_Web Scraping_Google Sheets_Google Sheets Formula_Google Sheets Importxml - Fatal编程技术网

Web scraping 重复尝试后,importxml无法获取url

Web scraping 重复尝试后,importxml无法获取url,web-scraping,google-sheets,google-sheets-formula,google-sheets-importxml,Web Scraping,Google Sheets,Google Sheets Formula,Google Sheets Importxml,我正试图在谷歌表单中导入一些日期和一个邮政编码的天气数据。我在以下基本公式中使用importxml: =importxml("https://www.almanac.com/weather/history/zipcode/89118/2020-01-21","//*") =if(O3="",,iferror(text(mid(O$8,find("Mean Temperature",O$8)+53,4),"

我正试图在谷歌表单中导入一些日期和一个邮政编码的天气数据。我在以下基本公式中使用importxml:

=importxml("https://www.almanac.com/weather/history/zipcode/89118/2020-01-21","//*")
=if(O3="",,iferror(text(mid(O$8,find("Mean Temperature",O$8)+53,4),"0.0° F"),"Loading..."))
当使用带有特定邮政编码和特定时间的公式时,它会返回页面的全文,然后我会查询该页面的平均温度和平均露点。但是,在上述示例和许多其他情况下,它在单元格中返回“无法获取URL”和#N/A

因此,问题是,它工作了很多次,但在第五天左右,它抛出了“无法获取URL”错误。当我更改邮政编码时,它也会失败。根据阅读了很多帖子,我唯一的猜测是,因为我经常从工作表中请求URL,所以它最终会被阻止。有没有其他人能看到的错误?我必须多次使用这个公式来计算相对湿度和其他东西,所以我需要它多次工作。有没有可能有更好的方法使用脚本来实现这一点?或者其他可能导致这种情况的原因? 这是有问题的电子表格(只是一项正在进行的工作,但天气部分是我的问题):

引发错误的公式从第N列开始。 此表包含许多使用上述基本公式的公式,以防您想看到更多的问题示例


谢谢

经过大量的尝试和错误,我找到了解决我自己问题的办法。我为需要按邮政编码和日期查找天气信息的任何人详细回答这个问题。 我切换到使用importdata,转换它以加快查询速度,并使用辅助单元格保存每个日期的结果。然后,我让其他公式在helper单元格的结果中搜索,而不是在整个过程中多次调用import***。它有时很慢,但它可以工作。这是更新的助手公式(其中O3包含“YYYY-MM-DD”格式中的日期,O5包含URL“https://www.almanac.com/weather/history/,而O4包含邮政编码:

=if(O3="",,query(transpose(IMPORTdata($O$5&$O$4&"/"&O3)),"select Col487 where Col487 contains 'Mean'"))
然后得到温度(其中O3包含日期,O8包含上述公式):

最后,计算相对湿度:

=if(O3="",,iferror(if(now()=0,,exp(((17.625*243.04)*((mid(O$8,find("Mean Dew Point",O$8)+51,4)-32)/1.8-(mid(O$8,find("Mean Temperature",O$8)+53,4)-32)/1.8))/((243.04+(mid(O$8,find("Mean Temperature",O$8)+53,4)-32)/1.8)*(243.04+(mid(O$8,find("Mean Dew Point",O$8)+51,4)-32)/1.8)))),"Loading..."))
最重要的是,importdata从未抛出过“无法获取URL”错误,因此对于这个特定站点来说,它似乎是一种更好的获取方法


希望这能帮助其他需要收集历史天气数据的人:)

经过大量的尝试和错误,我找到了解决我自己问题的方法。我为需要按邮政编码和日期查找天气信息的任何人详细回答这个问题。 我切换到使用importdata,转换它以加快查询速度,并使用辅助单元格保存每个日期的结果。然后,我让其他公式在helper单元格的结果中搜索,而不是在整个过程中多次调用import***。它有时很慢,但它可以工作。这是更新的助手公式(其中O3包含“YYYY-MM-DD”格式中的日期,O5包含URL“https://www.almanac.com/weather/history/,而O4包含邮政编码:

=if(O3="",,query(transpose(IMPORTdata($O$5&$O$4&"/"&O3)),"select Col487 where Col487 contains 'Mean'"))
然后得到温度(其中O3包含日期,O8包含上述公式):

最后,计算相对湿度:

=if(O3="",,iferror(if(now()=0,,exp(((17.625*243.04)*((mid(O$8,find("Mean Dew Point",O$8)+51,4)-32)/1.8-(mid(O$8,find("Mean Temperature",O$8)+53,4)-32)/1.8))/((243.04+(mid(O$8,find("Mean Temperature",O$8)+53,4)-32)/1.8)*(243.04+(mid(O$8,find("Mean Dew Point",O$8)+51,4)-32)/1.8)))),"Loading..."))
最重要的是,importdata从未抛出过“无法获取URL”错误,因此对于这个特定站点来说,它似乎是一种更好的获取方法


希望这能帮助其他需要提取历史天气数据的人:)

当你使用“基本公式”作为实际公式而不是嵌套在其他公式中时会发生什么情况?@Rubén遗憾的是,同样的事情。您可以在单元U5中看到该示例。我在没有任何变量的情况下尝试了它,只是为了看看发生了什么。虽然演示电子表格可能会有所帮助,但所有相关的细节都应该包括在问题中,比如公式、公式结果、文本错误消息(如果有)…演示应该是我道歉。我试着把这些都包括进去。为了更清楚,我将对问题进行编辑。当你使用“基本公式”作为实际公式而不是嵌套在其他公式中时会发生什么情况?@Rubén遗憾的是,同样的事情。您可以在单元U5中看到该示例。我在没有任何变量的情况下尝试了它,只是为了看看发生了什么。虽然演示电子表格可能会有所帮助,但所有相关的细节都应该包括在问题中,比如公式、公式结果、文本错误消息(如果有)…演示应该是我道歉。我试着把这些都包括进去。为了更清楚,我将编辑这个问题。