【问题标题】:IMPORTXML function in Google SheetsGoogle 表格中的 IMPORTXML 函数
【发布时间】:2019-10-31 03:47:11
【问题描述】:

使用IMPORTXML 函数,是否可以构造一个XPATH 查询来提取给定维基百科页面的行业值?

例如,我想从该页面提取的值 - https://en.wikipedia.org/wiki/Target_Corporation - 是“零售”,而在此页面 - https://en.wikipedia.org/wiki/Boohoo.com - 它将是“时尚”。

【问题讨论】:

    标签: web-scraping google-sheets google-sheets-formula google-sheets-query google-sheets-importxml


    【解决方案1】:
    • 您想要创建 xpath 以检索给定 Wikipedia 页面的行业值。

    如果我的理解是正确的,作为其他模式,这个 xpath 的公式怎么样?请认为这只是几个答案之一。

    示例公式:

    =IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td")
    
    • xpath 是//th[text()='Industry']/following-sibling::td
    • 在这种情况下,https://en.wikipedia.org/wiki/Target_Corporationhttps://en.wikipedia.org/wiki/Boohoo.com 的 URL 放在单元格“A1”中。

    结果:

    参考:

    补充:

    根据您的回复,我知道您还想添加 2 个网址。所以所有的网址如下。

    问题和解决方法:

    对于上述网址,当使用=IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td")的公式时,返回RetailFashionRetailTravel, services

    当xpath修改为//th[text()='Industry']/following-sibling::td/aRetail#N/A#N/ATravel返回。

    之所以会这样,是因为以下的不同。

    <tr>
      <th scope="row">Industry</th>
      <td class="category"><a href="/wiki/Travel" title="Travel">Travel</a> services</td>
    </tr>
    

    <tr>
      <th scope="row" style="padding-right:0.5em;">Industry</th>
      <td class="category" style="line-height:1.35em;"><a href="/wiki/Retail" title="Retail">Retail</a></td>
    </tr>
    

    <tr>
      <th scope="row" style="padding-right:0.5em;">Industry</th>
      <td class="category" style="line-height:1.35em;">Fashion</td>
    </tr>
    

    由此,我认为不幸的是,为了从上面检索TravelRetailFashion,它们不能只用一个 xpath 直接检索。所以我针对这种情况使用了一个内置函数。

    解决方法:

    在这个解决方法中,我使用了INDEX。请认为这只是几个答案之一。

    =INDEX(IMPORTXML(A1,"//th[text()='Industry']/following-sibling::td"),1,1)
    
    • xpath 是//th[text()='Industry']/following-sibling::td。这没有被修改。
    • 在这种情况下,URL 放在单元格“A1”中。
    • 当检索到 2 个值时,将检索第一个值。通过这个,我使用了INDEX
    结果:

    【讨论】:

    • 这很有帮助。谢谢!在某些情况下会导致奇怪的结果。对于此页面 - en.wikipedia.org/wiki/Woot - 即使链接有效并且 HTML 似乎具有与其他页面相同的结构,它也会返回“找不到 url 的资源”错误。更大的问题是,对于由多个单词描述的行业(例如 - en.wikipedia.org/wiki/TripAdvisor),该公式将所有单词放在相邻单元格中的第二个单词之后(而不是将所有单词连接到一个单元格中)。我想知道是否可以解决这些问题。
    • @zgall1 感谢您的回复。我没有注意到您还想将此公式用于其他 URL。这是因为我的技术不好。我对此深表歉意。我为您提供的 4 个 URL 添加了一个公式。你能确认一下吗?不幸的是,我认为为了从 4 个 URL 中检索值,不能仅使用一个 xpath 直接检索这些值。所以我为这种情况使用了一个内置函数。如果这不是您想要的方向,我很抱歉。
    • 我为迟到的回复道歉。这确实对我有用。
    • @zgall1 感谢您的回复。我很高兴你的问题得到了解决。也谢谢你。
    【解决方案2】:

    尝试:

    =INDEX(IMPORTXML("https://en.wikipedia.org/wiki/Boohoo.com", 
     "//td[@class='category']"), 2, 1)
    

    =INDEX(IMPORTXML("https://en.wikipedia.org/wiki/Target_Corporation", 
     "//td[@class='category']"),2,1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多