如何使用 Google-apps-script 从延迟加载的网页(通过 API)抓取数据?

2023-11-29

我正在尝试使用 Google-apps-script 创建一个自动化流程,从这样的页面中抓取价格数据:

https://www.barchart.com/stocks/quotes/$AVVN/price-history/historical

具有挑战性的部分是,网页上的数据是“延迟加载”的,因此我在其他网页上使用的“传统”扫描方法在这里不起作用。

我考虑过解决这个问题的其他方法 - 但是:

  • 条形图不提供以下数据: $AVVN 通过 http: //marketdata.websol.barchart.com/getHistory
  • 我不想使用“下载”按钮 - 因为这需要 自动登录。
  • ImportXML() 不起作用(它适用于网页上的其他表, 但不是我想要的)。

我在下面的帖子中发现了类似的问题 - 收到了来自 omegastripes 的非常详细且内容丰富的回复:打开网页,全选,复制到sheet中

-但是当我运行我的代码时:

function test(){
  var url = 'https://www.barchart.com/proxies/core-api/v1/historical/get?symbol=%24AVVN&fields=tradeTime.format(m%2Fd%2Fy)%2CopenPrice%2ChighPrice%2ClowPrice%2ClastPrice%2CpriceChange%2Cvolume%2CsymbolCode%2CsymbolType&startDate=2019-04-15&endDate=2019-07-15&type=eod&orderBy=tradeTime&orderDir=desc&limit=2000&meta=field.shortName%2Cfield.type%2Cfield.description&raw=1'; 
  var options = {
     "muteHttpExceptions": false
  };
  var response   = UrlFetchApp.fetch(url, options);   
  Logger.log(response);
}

-然后我收到以下错误:

Request failed for https://www.barchart.com/proxies/core-api/v1/historical/get?symbol=%24AVVN&fields=tradeTime.format(m%2Fd%2Fy)%2CopenPrice%2ChighPrice%2ClowPrice%2ClastPrice%2CpriceChange%2Cvolume%2CsymbolCode%2CsymbolType&startDate=2019-04-15&endDate=2019-07-15&type=eod&orderBy=tradeTime&orderDir=desc&limit=2000&meta=field.shortName%2Cfield.type%2Cfield.description&raw=1 returned code 500. Truncated server response: <!doctype html> <html itemscope itemtype="http://schema.org/WebPage" lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="wi... (use muteHttpExceptions option to examine full response) (line 57, file "DS#1")

基本上是一个“糟糕,出了点问题。抱歉...此页面似乎有问题。“ ...如果您将地址粘贴到浏览器中。

所以我的问题是:如何从此页面抓取数据,或者 Barchart 现在是否已成功阻止此抓取选项?


您无法使用 Google Apps 脚本延迟加载网页,因为它们仅返回网页的 HTML 内容,并且不会等待 JavaScript 加载后再返回内容。

一种可能的解决方案是使用 Google Cloud Functions 和 Puppeteer 来加载页面。 Cloud Function 提供了一个 HTTP API,可以通过 URLFetch 服务直接从 Apps 脚本调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Google-apps-script 从延迟加载的网页(通过 API)抓取数据? 的相关文章

  • ajax 和相对 url

    我真的不明白这个 我有以下 获取 请求 ajax url api getdirectories dataType json success function data Do stuff 这是我的临时服务器向我提供的页面 http atlas
  • 强制ajax调用清除缓存

    我有一个 cms 可以在其中更改对象的位置 每次位置更改后 ajax 调用都会更新整个对象列表 但不幸的是 一些数据存储在缓存中 并且没有可见的更改 有没有办法用 javascript request other 强制清除缓存 我尝试过 缓
  • 如何使用 cURL 和 PHP 抓取 LinkedIn 公司页面?在标头错误中找不到 CSRF 令牌

    我想用 cURL 和 PHP 抓取一些 LinkedIn 公司页面 LinkedIn 的 API 不是为此构建的 因此我必须使用 PHP 来完成此操作 如果还有其他选择 请告诉我 在抓取公司页面之前 我必须通过 cURL 使用个人帐户登录
  • 如何从 Google 电子表格中删除项目?

    我通过在脚本编辑器上选择 文件 gt 制作副本 错误地制作了 Google Apps 脚本项目的副本 从那时起 每次我在该项目所属的电子表格屏幕上单击 工具 gt 脚本编辑器 时 我看到显示两个项目 原始项目和复制项目 的屏幕 我需要选择一
  • 许多文档引用了一个 Google Apps 脚本 [重复]

    这个问题在这里已经有答案了 我已经通过驻留在 Google 文档中的 Google Apps 脚本创建了一个脚本 我使用该文档作为模板对象 然后将其复制到我使用这些脚本函数的许多 Google 文档中 问题是 每当我编辑该主脚本时 所有子文
  • 通过嵌入式 Google Sheet 上的按钮激活脚本

    我正在尝试嵌入一个 Google 电子表格 其中包含一个我希望用户能够激活的脚本 我不希望他们能够编辑页面上的任何内容 我想我可以这样做 共享工作表并设置编辑权限 限制在我想要共享的一张纸上进行编辑 图像位于单元格上方 所以我认为这会阻止人
  • 带有 jsessionid 的 R 网络抓取工具

    我正在 R 中测试一些网页抓取脚本 我已经阅读了很多教程 文档并尝试了不同的方法 但到目前为止还没有成功 我试图抓取的网址是this one http www dataescolabrasil inep gov br dataEscolaB
  • 当 ADFS 验证的会话过期时,XHR 请求失败

    我们有一个站点依赖于使用 Active Directory 联合身份验证服务 ADFS 和 WSFederationAuthenticationModule 的联合身份验证 该网站还使用了一组在用户交互时触发的 XHR 请求 一个特定的例子
  • 如何使用 google Sheet 作为数据库

    如何在 HTML Web 应用程序中生成 Google 工作表数据 并允许用户从 HTML Web 应用程序更新评论 我在谷歌表中有一些数据 通过谷歌表单提交 我想使用搜索按钮根据 请求编号 从网络应用程序搜索工作表数据 应该能够更新网络应
  • Google Apps 脚本中 ui.alert 窗口中的分割线和粗体文本

    我觉得这应该很简单 但我找不到任何相关内容 我希望我的消息在 ui alert 窗口中弹出 以粗体显示某些单词并在以下位置分割字符串 进入新行 这是我的代码 function send var ui SpreadsheetApp getUi
  • Google Apps 脚本中的范围要求过高

    Here s 自定义 Google 表格 https docs google com spreadsheets d 1qwOzxP qHWRhI2HZmGdlgKLlXCYIQz4XO2tq1EY 8NE edit gid 0与脚本代码 v
  • 无法在我的抓取工具中设置超时选项以防止无限循环

    我已经使用 IE 在 vba 中编写了一个脚本 在其搜索框中的网页中启动搜索 通过点击搜索按钮根据搜索填充结果 网页加载它是searchbox几秒钟后它就会打开 但是 我的下面的脚本可以处理这个障碍并以正确的方式执行搜索 现在 我有一个稍微
  • ReferenceError:未定义 ConferenceDataService

    我正在尝试开发像 Zoom 会议这样的谷歌日历插件 在 appsscript json 文件中 有以下代码 calendar conferenceSolution onCreateFunction createConference id 1
  • 对于只触及我的工作表的 Google 表格脚本,收到“此应用程序未经验证”

    我正在编写一个 Google Sheets 脚本 我只想访问与 gs 文件关联的同一电子表格中的数据 似乎我应该有权在自己的电子表格中运行脚本 但是每当我运行一个函数时 我都会得到一个This app isn t verified信息 我该
  • 上传到google脚本中的特定文件夹

    所以我想制作一个表单 将文件 照片 视频上传到 Google Drive 中的特定文件夹 文件 照片 视频 但我不知道如何在 Google Apps 脚本中制作 我尝试了这样的操作 并在控制台中出现错误 无效的参数侦听器 所以这里有一个索引
  • 在 JSON 对象中存储和发送原始文件数据

    我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容 我的意思是文件和文件内容都是用户生成的 在 Backbone 前端中使用 xhr ajax 调用两种方式针对 Django 后端 编辑 也许问题仍然不清楚 如果您在 IDE
  • 等待网页完全加载,然后再使用 python 请求进行抓取

    我目前正在尝试从 LinkedIn 上的特定页面抓取数据 我有一个能够登录 LinkedIn 的脚本 但当我尝试访问包含数据的页面时遇到了障碍 当我打电话时requests get data url 我最终得到了 LinkedIn 加载屏幕
  • 使用 Scala 进行网页抓取 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如果单元格包含“否”,则隐藏 Google 表格中的行 - 多张表格

    我正在运行 1 个主电子表格 其中有 4 个产品特定电子表格从中提取信息 如果没有提取相关信息 较小的电子表格将在所有单元格中显示 否 我希望隐藏带有 否 的行 我已经把一些东西拼凑在一起了 这样的作品 但我无法让它在所有 4 张纸上都工作
  • 将 JSON 数据导入 Google 表格

    我从 Web 服务中提取数据 其格式为 JSON 我正在为 Google Sheets 编写一个 Google Apps 脚本 它将为我填充数据 我的问题是 我似乎无法解析它 Doing var dataset myJSONtext Bro

随机推荐

  • 如何在字典中的特定键之间交换值?

    假设你有一本这样的字典 d A content for A B content for B 在两个条目之间交换值的最有效方法是什么 所以结果应该是这样的 d A content for B B content for A 当然 你可以创建一
  • 返回具有公差的唯一元素

    在Matlab中 有这样的unique command返回数组中唯一的行 这是一个非常方便的命令 但问题是我无法为其分配容差 在双精度中 我们总是必须比较精度内的两个元素 是否有一个内置命令可以在一定的容差范围内返回唯一元素 到了R2015
  • Java Try Catch 块

    我最初在大学开始编程并学习了 vb net 现在我决定转向 Java 并有一些疑问 在vb中 try catch语句的布局如下 try Catch ex as exception finally End catch 但是从java网站 ht
  • 如何使用 Appscript doPost 创建 REST API?

    1个月后 我想再次提出这个话题的问题 这是包含所有链接的整篇文章 https docs google com document d 1Tb0 twzHl wXbvaNF2IpCT0CiONT9PoqPlEweLz3oYI edit 项目中有
  • 使用 OWASP Java HTML Sanitizer 清理 html 时如何允许嵌入图像

    我想允许 img src I see 有关于如何执行此操作的文档但我不明白如何实现它 我尝试添加模式 allowUrlProtocols data allowAttributes src matching Pattern compile d
  • Emacs ess 自动完成

    我是 R 用户 我想在 emacs 中使用 R 但是 我在 emacs 中自定义 ess 时遇到了麻烦 我已经在我的 emacs 中安装了自动完成包和最新的 ess 但是当我在 emacs 中运行 r 时 自动完成功能无法正常工作 当我输入
  • 一种路由分配程序算法

    我想做的是创建一个程序 为驾驶考试分配一条路线 将有三条不同的路线 在某些点连接在一起 交叉点上绝不应有超过一名学生 解决这个问题的最佳方法是按时间安排交叉点 这不是我唯一的问题 我需要将路线平均分配给考官 所以路线1将交给考官1 路线 2
  • 如何使用 AppleScript 关闭终端选项卡?

    我正在使用 AppleScript 在 终端 选项卡中打开 PostgreSQL 如下所示 bin bash function new tab TAB NAME 1 COMMAND 2 osascript e tell applicatio
  • 有没有办法让视差在 DIV 中发挥作用

    可能完全是在树错树 但是你能使用 div 背景图像元素制作视差滚动图像吗 我想要发生的是 我目前有一些带有带有文本效果翻转的图像的 DIV 但因为我在背景图像中使用视差 所以我想保留所有站点图像的 3D 主题 编辑 例如 是否可以在此页面上
  • 如何检测手机是否连接到 Android Auto

    我正在制作一个应用程序 当手机连接到 Android Auto 时 它应该改变其行为 它不具有任何汽车功能 并且不会作为 Android Auto 应用程序进行营销 提交 有没有办法检测手机是否连接到 Android Auto 我知道汽车媒
  • 如何以编程方式安装 NuGet 包?

    我想以编程方式将 NuGet 包安装到项目中 并更新 csproj文件 以及packages config file 我用的是官方的Nuget core框架的源代码可以在这里找到 https github com NuGet NuGet2
  • Frame.__init__ 是做什么的?

    在下面的代码中 第 5 行是什么Frame init 做 有人可以解释一下它背后的概念吗 多谢 from Tkinter import class AppUI Frame def init self master None Frame in
  • 早期初始化程序中的匿名部分函数需要“过早访问类”

    为什么编译失败 trait Item trait StringItem extends Item def makeString String trait SomeOtherItem extends Item trait DummyTrait
  • jQuery 防止默认操作功能键(F3、F4 等)

    我这里有一个非常基本的例子 http jsfiddle net arhVd 1
  • SIGCHLD 在 Linux 上通过 SIGCONT 发送,但在 macOS 上不发送

    在主进程中我监听SIGCHLD signal SIGCHLD my handler Then I fork execv 并让它在后台运行 例如 bin cat 当我尝试从终端向子进程发送 SIGSTOP 时 my handler 被叫 但是
  • Android 按钮工具提示

    我是 Android 新手 我想知道是否可以有一个带有嵌入式工具提示的 Android 按钮元素 我想在按钮上有一个图像 当按下该图像时会打开某种对话框 提示覆盖 因此 不是悬停工具提示 而是可点击元素 该元素位于按钮单击所在位置之外的其他
  • 将列表转换为字典列表

    我有以下五个清单 a RA CROXE 14156 RA CROXE 14084 b CR ENGINEER NAME DESCRIPTION BINARIES c John Mark d M4 Hiding Emergency Group
  • 如何让 FlashBuilder 使用自定义命名空间前缀

    我有一个组件库 它有一个如下所示的清单文件
  • VBA - 如何有条件地跳过 for 循环迭代

    我对数组有一个 for 循环 我想要做的是测试循环中的某个条件 如果为真则跳到下一次迭代 For i LBound Schedule 1 To UBound Schedule 1 If Schedule i 1 lt ReferenceDa
  • 如何使用 Google-apps-script 从延迟加载的网页(通过 API)抓取数据?

    我正在尝试使用 Google apps script 创建一个自动化流程 从这样的页面中抓取价格数据 https www barchart com stocks quotes AVVN price history historical 具有