在span类上的ImportXML- xpathquery

时间:2019-04-13 09:50:22

标签: html web-scraping google-sheets-formula

我正在尝试使用ImportXML函数将以下website的价格($ 5.99)导入我的Google表格。

我似乎无法在网站上标识班级名称以使其正常运行。 当前使用以下内容作为我的xpath_query://div[@class='']

我似乎无法使用xpath_query函数获得正确的importXML来指向$ 5.99。 任何帮助表示感谢,谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道可以使用IMPORTXML访问价格信息,因为我认为每次加载页面时都需要查找价格数据,经过一些挖掘后,我偶然发现了该页面检查页面:

Found the price here

使用非常容易预测(因此易于构造)的URL查找价格。该URL基本上如下所示:

https://redsky.target.com/web/pdp_location/v1/tcin/ [8个数字] ?pricing_store_id = [4个数字] &key = [32个字母数字字符]

因此,从后到前,我相信结尾的32个字符是某种键,类似于用于访问API的键。我认为此密钥用于程序调用所请求的信息。中间的4个数字是某种商店标识号。我认为这是某种方式用来获取特定商店的定价信息。然后,最重要的也许是URL前面的那8个数字。我认为这8个数字是产品标识信息。有点像SKU号码。

现在,我进行了一些测试,并提出了一个非常基本的解决方案,该解决方案可以在大多数情况下完成工作,而无需使用任何自定义功能或脚本。

我们可以仅基于网页上产品的URL轻松构建价格查询URL。价格查询的8位产品标识符是您提供的URL末尾的8位字符串(方便地,此模式在任何产品页面上都是一致的)。

关于商店标识号(4个数字),看来我们实际上可以将其设置为几乎任何值,并且可以使用,因此在我的示例中,我将其设置为0000。

现在对于最后的32键。我尝试不使用key参数(“&key = [key]”),但收到一条错误消息,指出key参数是必需的。但是,由于某些未知的原因,我再次尝试了相同的操作,但是我在URL中包含了(“&key =”)(只是没有实际的密钥),所以它起作用了!它带我到正确的页面。

回顾一下,我们只需要产品编号,可以从URL(或Target.com上的任何URL)获得产品编号。

现在,在表格中,我们可以使用IMPORTDATA调用从此定价URL导入数据(请注意,IMPORTXML在这种情况下将不起作用)。当我们这样做时,我们得到的是这样的:

Imported Data

这将返回带有不同定价详细信息的各种列。对于本示例,我假设我们对“ current_retail”价格感兴趣,因为它与您帖子中的价格匹配。

从这里开始,要获取价格并以字符串形式输出,可以使用INDEX函数,并使用SUBSTITUTE之类的标题删除标题。如果我们希望将输出解释为数字,则只需在其上使用VALUE函数。

这是最终结果:

Table

以下是为所有功能提供动力的一个功能:

=VALUE(SUBSTITUTE(INDEX(IMPORTDATA("https://redsky.target.com/web/pdp_location/v1/tcin/"&RIGHT(A2,8)&"?pricing_store_id=0000&key="),,5),"current_retail:",""))

我们给它输入(产品的URL),然后将价格输出为数字。这也将与其他产品一起使用。但是,有时产品似乎存在多种价格问题,例如不同尺寸的选择等等。在这些情况下,IMPORTDATA返回的数组看起来有些不同,这意味着INDEX函数可能无法获取正确的价格数据。可能存在一种输出正确价格的解决方案,但这超出了此答案的范围。

无论如何,我希望这可以帮助您找到想要的所有避孕套的价格。