首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从同一个网站优化多个importxml?

如何从同一个网站优化多个importxml?
EN

Stack Overflow用户
提问于 2018-05-30 12:18:45
回答 1查看 4.5K关注 0票数 4

我有一个Google表,其中行是产品,列是关于这些产品的信息(材料、颜色、价格、.)。

使用带有相应xpath查询的函数IMPORTXML检索这些信息。在下面的示例中,D列是该产品的URL。这些函数检索第3行产品的信息(玻璃、颜色和类型):

代码语言:javascript
复制
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Glass')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Color')]]/td")
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,'Type')]]/td")

对于每个产品,大约有10个列被检索,因此对于同一个URL有10个不同的函数IMPORTXML。

当产品很少时,它可以正常工作,但当产品太多时,只检索到一些信息,而其他单元格则保持冻结状态,其值为“Loading.”。

我找到的唯一解决办法是手动复制/粘贴检索到的值(,Ctrl+C,Ctrl+Maj+v),然后一些其他单元格被解除阻塞并开始导入值。最后,我需要对所有的细胞都这样做,这需要很长的时间。

  1. 为什么我的细胞被冻结在“装载.”里?谷歌是否规定了一个限制?
  2. 我是否应该调整我的函数以优化流程,如果可能的话,减少IMPORTXML函数的数量?
  3. 你有比我花时间解决问题更好的解决方案吗?
  4. xpath查询总是非常相似的。是否可以使用预定义元素的列表。然后使用其他Google函数获得相同的结果,但只使用一个IMPORTXML函数。

例如:

代码语言:javascript
复制
=IMPORTXML(D3,"//table[@class='info-table']/tr[th/text()[contains(.,{'Glass', 'Color', 'Type'})]]/td")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-30 13:06:34

可以通过调整xpath查询并结合使用不同的Google电子表格公式来解决此问题。

  1. 可以使用字符\x组合几个xpath查询
  2. 要只获得第一个结果,可以用(YOUR_XPATH)1包围xpath
  3. 转置函数将在同一行上移动多个结果。

例如:

代码语言:javascript
复制
=TRANSPOSE(IMPORTXML(D2,"
(//table[@class='info-table']/tr[th/text()[contains(.,'Diameter')]]/td)[1] | 
(//table[@class='info-table']/tr[th/text()[contains(.,'Material')]]/td)[1] | 
(//table[@class='info-table']/tr[th/text()[contains(.,'Glass')]]/td)[1] | 
(//table[@class='info-table']/tr[th/text()[contains(.,'W/R')]]/td)[1] | 
(//table[@class='info-table']/tr[th/text()[contains(.,'Caliber')]]/td)[1] | 
(//table[@class='info-table']/tr[th/text()[contains(.,'Type')]]/td)[1]"))

通过这样做,每个产品只有一个importXML。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50604523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档