首页 > 解决方案 > 如何在 googlesheet 中使用 xmlimport 函数从具有相同类名的 DIV 中获取不同的值?

问题描述

这是我试图从其中抓取值的网页上的 HTML 代码:

<div class="parentclass">
   <div class="subclass">
      <a class="subclass1" href="https://www.google.com">         
         <span class="_getvalclass">This is a sample text</span>
      </a>
   </div>
   <div class="subclass1">
      <div class="_getvalclass">2:30</div>      
   </div>
   <div class="subclass1">
      <div class="_getvalclass">105</div>      
   </div>
   </div>

我在谷歌表中使用这个功能

=SUBSTITUTE(CLEAN(IMPORTXML("http://www.pagename.com", "//div[@class='_getvalclass']")),",","&#44;")

我得到这个值:

2:30

现在我有两个具有相同类名“_getvalclass”的 div,有什么方法可以定位每个 div 并获取单独的值?像使用索引定位 div:_getvalclass[0], _getvalclass[1]

还是有其他方法?

第 -2 部分问题(下面的 HTML):

<div class="o39aH">
   <div class="_3sle8">
      <a class="T3XY3" href="/some-page">
         <span class="_2KIv8">Test</span>
         <span class="_2UUUp">Unique text only in some page (some page it is missing)</span>
      </a>
   </div>
   <div class="T3XY3">
      <div class="_2KIv8">2:30</div>
      <div class="_2UUUp">Time</div>
   </div>
   <div class="T3XY3">
      <div class="_2KIv8">100</div>
      <div class="_2UUUp">Pounds</div>
   </div>
   <button class="T3XY3">
      <div class="_2KIv8">some text</div>
      <div class="_2UUUp">Favorite</div>
   </button>
   <button class="T3XY3">
      <div class="_2KIv8">Other text</div>
      <div class="_2UUUp">Playlist</div>
   </button>
</div>

在某些情况下,我想提取这些值

<div class="_2KIv8">2:30</div>
<div class="_2UUUp">Time</div>

在其他情况下,我想提取这些值

  <div class="_2KIv8">100</div>
  <div class="_2UUUp">Pounds</div>

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-formula

解决方案


这个答案怎么样?请认为这只是几个答案之一。

问题 1 的答案:

如果要2:30使用索引为“div”的xpath 进行检索,那么下面的xpath 怎么样?

示例 xpath:

//div[@class='parentclass']/div[2]

或者

//div[@class='parentclass']/div[2]/div[@class='_getvalclass']/text()

示例公式:

=IMPORTXML(A1,"//div[@class='parentclass']/div[2]")
  • 在这种情况下,http://www.pagename.com被放在单元格“A1”中。

笔记:

  • 您可以在此处测试 xpath 。
  • 我不确定您的实际网址。所以我不确定上面的xpath是否可以直接用于你的情况。因为我不确定您问题中的 HTML 内容是否可以通过IMPORTXML.

如果这不是你想要的方向,我很抱歉。

问题 2 的答案:

示例 xpath:

模式一:
//div[@class='o39aH']/div[2]

//div[@class='T3XY3'][1]

//div[@class='o39aH']/div[@class='T3XY3'][1]
模式二:
//div[@class='o39aH']/div[3]

//div[@class='T3XY3'][2]

//div[@class='o39aH']/div[@class='T3XY3'][2]

示例公式:

请将 URL 放入单元格“A1”。

模式一:
=IMPORTXML(A1,"//div[@class='o39aH']/div[2]")
  • 在这种情况下,2:30Time被检索。
模式二:
=IMPORTXML(A1,"//div[@class='o39aH']/div[3]")
  • 在这种情况下,100Pounds被检索。

笔记:

  • 您可以在此处测试 xpath 。
  • 如果要检索Testand Unique text only in some page (some page it is missing),可以使用//div[@class='o39aH']/div[@class='_3sle8']/a[@class='T3XY3'].

推荐阅读