我正在尝试使用 Google Sheets 中的 importxml 函数从网站上抓取 MPN(制造商零件号)以获取产品列表(大约 2000 个)。
网站: http://gun.deals/search/apachesolr_search/640832007756
说明书上说要使用importxml公式。链接是A1,然后使用chrome中的inspector复制xpath。结果:
=IMPORTXML(A1,"//*[@id='content']/div[3]/div[2]/div/div/div/div/div/div[2]/dl/div[2]/dd/a")
(说明还说将内容周围的双引号更改为单引号。)
运行公式时导入错误“内容为空”。我尝试进行编辑,但我认为 XPath 不正确。有人说您无法按照说明从检查器中复制粘贴。
我尝试的另一件事是=IMPORTHTML(A1, "list", 8)
。这将返回 UPC 和 MPN。但它将 MPN 放在第二行。
我对此很陌生,并且在过去的几个晚上一直在寻找解决方案。任何帮助将非常感激。
还有奖金问题。如果我们有 MPN,那么刮除 UPC 的公式是什么? https://gun.deals/search/apachesolr_search/J941PSL9
最佳答案
- 您想要从“UPC”的值中检索“MPN”的值。
- 您想要从“MPN”的值中检索“UPC”的值。
- 您希望使用 Google 电子表格的内置功能来实现此目的。
如果我的理解是正确的,这个示例公式怎么样?请将此视为多个答案之一。
模式 1:
在此模式中,“MPN”的值是从“UPC”的值中检索的。
示例公式:
=IMPORTXML("http://gun.deals/search/apachesolr_search/"&A2,"//li[contains(text(),'MPN')]/a")
- xpath 为
//li[contains(text(),'MPN')]/a
。 - 在本例中,“UPC”的值将放入单元格“A2”中。
结果:
模式 2:
在此模式中,“UPC”的值是从“MPN”的值中检索的。
示例公式:
=IMPORTXML("http://gun.deals/search/apachesolr_search/"&A2,"//li[contains(text(),'UPC')]/a")
- xpath 为
//li[contains(text(),'UPC')]/a
。 - 在本例中,“MPN”的值将放入单元格“A2”中。
结果:
引用:
如果我误解了您的问题并且这不是您想要的结果,我深表歉意。
添加:
来自your replying ,我修改了公式以使用以下值。
Here is a list of UPC 787450038417 787450230576 661120974888 859462004015 82442306667 810237023013 798681538782 787450348196 604206120816
UPC --> MPN:
=IMPORTXML("http://gun.deals/search/apachesolr_search/"&A2,"//dd/a[../../dt[contains(text(),'UPC')]]|//dd/span[../../dt[contains(text(),'UPC')]]")
- xpath 为
//dd/a[../../dt[contains(text(),'UPC')]]|//dd/span[../../dt[包含(text(),'UPC')]]
。 - 在本例中,“UPC”的值将放入单元格“A2”中。
MPN --> UPC:
=IMPORTXML("http://gun.deals/search/apachesolr_search/"&B2,"//dd/a")
- xpath 是
//dd/a
。 - 在本例中,“MPN”的值被放入单元格“B2”中。
结果:
关于web-scraping - 使用 Google Sheets 进行网页抓取。 Importxml函数xpath修正,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58601028/