【问题标题】:How Do I Import Data Into My Google Sheet from a Website Using importXML如何使用 importXML 从网站将数据导入我的 Google 表格
【发布时间】:2019-06-02 22:06:52
【问题描述】:
今天在 Google 表格中尝试使用 importXML 时,我遇到了一个问题。我试图将 USTA 锦标赛页面的标题标题导入 Google 表格,但是这不起作用,因为它只是导致显示网页的 HTML 标题(“TournamentHome”)。以下是 Google 表格和使用的网站:
Google 表格和功能:
=importXML(F2, "//html//body[@id='thebody']//div[@id='content']//div[@id='pagetitle']")
正在使用的网站和部分源代码
我试图从网站中提取的标题是TOWPATH 24th ANNUAL THANKSGIVING JR SINGLES。
网站链接是https://m.tennislink.usta.com/tournamenthome?T=225779
【问题讨论】:
标签:
xpath
google-sheets
import
google-sheets-formula
google-sheets-importxml
【解决方案1】:
更新:
=REGEXEXTRACT(QUERY(ARRAY_CONSTRAIN(IMPORTDATA(
"https://m.tennislink.usta.com/tournamenthome?T=225779"), 555, 1),
"where Col1 contains 'escape'"), "\(""(.*)""\)")
不幸的是,这不可能按照您尝试的方式进行,因为您尝试抓取的字段由 JavaScript 控制,而 Google 表格无法理解/导入 JS。您可以简单地通过禁用给定链接的 JS 来测试这一点,您将看到可以导入 Google 表格的确切内容:
【解决方案2】:
这个示例公式怎么样?在此公式中,在将值放入#pagetitle 之前,直接从脚本中检索标题值。请认为这只是几个答案之一。
示例公式:
=REGEXEXTRACT(IMPORTXML(A1,"//div[@class='tournament_search']/script"),"escape\(""([\w\s\S]+)""")
结果:
将https://m.tennislink.usta.com/TournamentHome/tournament.aspx?T=38079和https://m.tennislink.usta.com/tournamenthome?T=225779放入“A1”和“A2”时,结果如下。
参考: