首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Google Sheets作为Java站点的Web抓取器

使用Google Sheets作为Java站点的Web抓取器
EN

Stack Overflow用户
提问于 2020-10-08 04:47:13
回答 1查看 261关注 0票数 0

我一直在尝试使用IMPORTXML()从以下网站抓取信息。

https://libbyapp.com/library/lapl/search/audiobooks/query-john%20scalzi/language-en/page-1

在命令没有成功和一些在线挖掘之后,这个命令似乎不会起作用,因为网站使用java来呈现信息。

在google sheets中有没有其他命令或方法可以从这个网页中抓取一些信息?具体地说,我想知道前3本书的名字和作者。

EN

回答 1

Stack Overflow用户

发布于 2020-10-08 09:35:18

不,不是Java。JavaScript。完全不同的东西。

幸运的是,这个站点有一个JSON API!您可以在浏览器的网络监视器中看到这一点。这意味着没有纯公式,但我们可以编写一个简单的用户脚本(工具>脚本编辑器)。

我们创建这个用户定义的函数(粘贴到编辑器中):

代码语言:javascript
运行
复制
function getAuthors(url, showHeaders) 
{
  let jsondata = UrlFetchApp.fetch(url);
  let object   = JSON.parse(jsondata.getContentText());
  
  let bookData = showHeaders ? 
    [ ['Title', 'Author(s)'] ] : 
    [];

  bookData = bookData.concat(
      object.items.map(item => (
      // Title is always first, followed by any authors:
      [item.title].concat(
        item.creators
          // Add more creator roles here:
          .filter(creator => creator.role === 'Author')
          // Take creator's name
          .map(author => author.name)
          // Comma-separated
          .join(',')
      ))
    )
  );
  
  return bookData;
}

使用网络监视器,我确定感兴趣的URL是

代码语言:javascript
运行
复制
https://thunder.api.overdrive.com/v2/libraries/lapl/media?overdriveFormats=true&mediaType=audiobook&query=john%20scalzi&language=en&page=1&perPage=24&x-client-id=dewey

然后,在您的工作表中,可以使用以下公式:

代码语言:javascript
运行
复制
=getAuthors(A1)

代码语言:javascript
运行
复制
=getAuthors(A1, 1)

如果您想要标题。

如果需要前三个参数,只需使用ARRAY_CONSTRAIN截断表即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64252076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档