【问题标题】:Scraping a website, Google Sheets IMPORTXML function, get specific lines in columns抓取网站,Google Sheets IMPORTXML 函数,获取列中的特定行
【发布时间】:2021-10-04 18:03:39
【问题描述】:

我需要抓取以下链接中的“通话日期”和“分发日期”单元格,并将数据导入谷歌表格。

https://www.quantumonline.com/search.cfm?tickersymbol=acp-a&sopt=symbol

但是,当我这样做时,我会获得特定单元格中的所有信息。我试图只获得单元格中的第一行,但我无法弄清楚如何做到这一点。我试过这个:

=IMPORTXML("https://www.quantumonline.com/search.cfm?tickersymbol="&B2&"&sopt=symbol","//tr[@bgcolor='FFEFB5']/../tr[2 ]/td[6]")

例如,当我使用它时,我在第六列中获得了分发日期,但不知道如何切断其下方的行,而只获得第一行的信息。其他列也是如此。

【问题讨论】:

  • 这就是你可以使用的替代方式=INDEX(IMPORTXML("https://www.quantumonline.com/search.cfm?tickersymbol="&B2&"&sopt=symbol","//tr[./th[.='Distribution Dates']]/following::tr/td[6]/font"),1)

标签: xml web-scraping google-sheets


【解决方案1】:

您可以使用text() 和方括号中的谓词来指定要选择的文本节点。

=IMPORTXML("https://www.quantumonline.com/search.cfm?tickersymbol=acp-a&sopt=symbol","//tr[@bgcolor='FFEFB5']/../tr[2]/td[6]/font/text()[1]")

【讨论】:

  • 非常感谢,正是搜索到的。是否可以使其更加具体?
  • 您可以使用 XPath 字符串函数来选择特定的子字符串,例如 =IMPORTXML("https://www.quantumonline.com/search.cfm?tickersymbol=acp-a&sopt=symbol","substring-before(//tr[@bgcolor='FFEFB5']/../tr[2]/td[6]/font/text()[1], ',')"),但这取决于您要选择的内容。
  • 谢谢,这个可以用于取出链接上的CUSIP号码吗?
  • 是的。为此你会做substring-before(substring-after(<an XPath>, 'CUSIP: '), ' ')
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多