|

Google Sheets如何自动抓取网页内容制作看板

我们制作报表的时候通常都会使用到一些动态的外部数据。这些数据有时候可以通过API获取,更多时候是在第三方的网页上。而且这些数据往往是动态的,需要经常刷新。那么有什么好方法可以自动地抓取这些数据呢?本篇马老师将利用Google Sheets的内置函数,分享一个实用的心得。

抓取网页中的表格或列表

Google Sheets提供了ImportHTML函数。这个函数有三个参数,分别是

  1. URL
  2. “table”或者”list”
  3. 从1开始的序号

用法也非常简单,输入要抓取的网页的URL,指明是第几个表格或者列表即可。

导入百度新闻列表
导入百度新闻列表

上图我们导入了百度上海本地新闻网页中的前11个列表。我们可以提取出那些有用的并汇总在一起。这里的列表实际上对应了HTML里的有序列表<ol>和无序列表<ul>,按照在HTML文件中出现的顺序排列。

从网页中导入当前价格
从网页中导入当前价格

上图我们从一个第三方网站导入了两个表格。这里提取的是该网页的第一和第二个表格。

有了上面这些抓取的数据我们就可以把该Google Sheet作为数据源去搭建Data Studio的看板了。

但是我们还有一步未完成,就是让数字在Sheets中刷新。为此我们要在Google Sheets的File>Settings中选择Calculation,并在Recalculation中选择On change and every hour。

将公式调整为每小时刷新
将公式调整为每小时刷新

抓取网页中任意内容

Google Sheets中的另一个函数ImportXML提供了我们抓取任意网页内容的能力。ImportXML有3个参数 ,其中第三个可以忽略。前两个是URL和XPATH。URL自不必解释,那什么是XPATH呢?

XPATH用来表示XML文档中某个元素的路径。HTML也是一种XML文档,因此HTML中的任意元素也都可以使用XPATH来定位。

比如:

//title页面的标题元素的内容<title>标题内容</title>
//div/span[@class=’nav’]一个<div>元素内的class为nav的<span>元素的内容
XPATH用法距离

XPATH和CSS Selector类似。现在有了ChatGPT,我们写XPATH方便了许多。

导入百度首页的热搜到Google Sheet
导入百度首页的热搜到Google Sheet

你甚至可以导入某个关键字的百度首页结果:

=IMPORTXML("https://www.baidu.com/s?wd=关键字", "//div[(contains(@class, 'result-op') and contains(@class, 'c-container') and @mu) or (contains(@class, 'result') and contains(@class, 'c-container') and @mu)]")
爬取特定关键字百度排名结果
爬取特定关键字百度排名结果

需要注意的是,Google Sheets抓取的IP来自Google,因此如果你的内容因为IP而变化则未必适用。另外这些函数的抓取并不会对目标URL页面进行渲染,如果服务器伺服的HTML中未包含内容,那么这些内容无法抓取。

至此,马老师是否打开了你的思路呢?

在Chrome的DevTools中复制XPath
在Chrome的DevTools中复制XPath

如果你会用Chrome的DevTools你可以在Elements工具中复制XPath。赶紧试试吧!

类似文章