【问题标题】:Using the ImportXML function on Google Sheets to get the publication date of web pages使用 Google Sheets 上的 ImportXML 函数获取网页的发布日期
【发布时间】:2018-11-08 12:30:25
【问题描述】:

我一直在尝试制定一种方法,使用 Google 表格返回网站上新闻文章的发布日期。有些页面并没有使这一点显而易见或根本没有提及发布日期,但在页面源中通常有一个节点,例如:

<meta content="2018-10-16T00:03:35+0100" itemprop="datePublished" />

所以我想出了一个这样的函数:

=ImportXml(A19, "//meta[@itemprop='datePublished']/@content") 

对于单元格 A19 中的 URL,如果节点使用该语法,它将返回内容。

但是在其他页面上,情况并非如此 - 语法将是这样的,Google 表格会返回错误“导入的内容为空”:

<meta property ="article:published_time" content="2018-10-16T00:03:35+0100" />.

似乎源代码中的相关节点都包含“已发布”一词 - 有没有办法构建我的查询,以便它从包含“已发布”一词的任何节点返回内容?

非常感谢!

【问题讨论】:

    标签: html xpath google-sheets


    【解决方案1】:

    试试这个 Xpath 查询:

    //meta[@*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'published')]]/@content
    

    它搜索包含“已发布”作为子字符串的任何属性,不区分大小写。

    我在这个字符串上测试过:

    <meta content="2018-10-16T00:03:35+0100" anyprop="datepublishedhelloworld" />
    

    它返回了这个结果:

    Attribute='content=2018-10-16T00:03:35+0100'
    

    使用这个工具https://www.freeformatter.com/xpath-tester.html

    【讨论】:

    • 让我知道这在 Google 表格中按预期工作。
    • 这确实工作得更好,谢谢!返回更少的“导入的内容为空”错误并查看返回该错误的网站,似乎源中没有可用的发布日期。一些站点返回错误“数组结果未展开,因为它会覆盖 [下面的单元格] 中的数据”,因为该站点上有多个“已发布”节点实例给出重复的结果,但这已通过 index 函数解决:=index (ImportXml(A8, "//meta[@*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'published')]]/@content"),1)
    • 好的,很好。我没有在表格中进行测试,但看起来你找到了一个很好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多