如何才能将网页上的两个或三个“并行”XPath 提取为可以导入电子表格的格式?
以下是一个例子:https://www.amazon.co.uk/s?rh=n%3A20606777031&language=en_GB&brr=1&pf_rd_i=3012216031&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_p=7accc6fa-9287-4d54-804e-88e159c5cb45&pf_rd_r=P0TZ793D83HJK8616YKC&pf_rd_s=merchandised-search-top-2&pf_rd_t=101&rd=1&ref=uk_outsbcd_1大多数商品都有实际价格和建议零售价。我想将所有价格和建议零售价提取到电子表格中。
获取 RRP 的一个丑陋的 XPath 是
/html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div[11]/div/div/div/div/div[2]/div[3]/div/a/div/span[2]/span[2]/text()
并获取价格(非小数部分)
/html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div/div/div/div/div/div[2]/div[3]/div/a/span/span[2]/span[2]/text()
产品名称:
/html/body/div[1]/div[2]/div[1]/div[1]/div/span[1]/div[1]/div/div/div/div/div/div[2]/div[1]/h2/a/span
如果我使用 $x 执行这些 XPath,展开结果,右键单击此处的结果(这是来自 Firefox 控制台的屏幕截图):
并选择Copy message
(在 Firefox 中)我得到如下内容:
Array(39) [ #text, #text, #text, #text, #text, #text, #text, #text, #text, #text, … ]
0: #text "2"
1: #text "7"
2: #text "8"
粘贴到文本编辑器中。
我希望输出格式不需要太多后期处理,然后才能将其插入电子表格。此外,如果我得到很多结果(100+?1000+?),Firefox 不会将它们全部列出。
作为第一步,我想
Array(39) [ #text, #text, #text, #text, #text, #text, #text, #text, #text, #text, … ]
0: #text "2"
1: #text "7"
2: #text "8"
看起来像这样:
2
7
8
也就是说,只有数字/结果,每行一个(然后我可以将其粘贴到电子表格中,每个 XPath 一列,名称将与价格和 RRP 匹配)。
下一步是制作一个包含所有内容的 csv/tsv,如下所示:
prod1,2,7
prod2,7,11
prod3,8,14
(我更喜欢用制表符而不是逗号,但在这里我使用了逗号,因为这样更清晰)
在电子表格中显示如下内容:
姓名 | 价格 | 建议零售价 |
---|---|---|
产品1 | 2 | 7 |
产品2 | 7 | 11 |
产品3 | 8 | 14 |
我该怎么做?我想象一个在浏览器控制台中执行的 Javascript 解决方案,其中输入是一个或多个 XPath,而输出是一个字符串,我可以从控制台复制并粘贴到电子表格中(或者该字符串直接插入到剪贴板中?)
由于这是一个我只会在特定站点上使用一次的黑客攻击,所以我准备在之后进行一些手动清理或操作。
我很不擅长使用浏览器控制台和 Javascript……这就是我问这个问题的原因。
(我的最终目标是计算价格变化的百分比)
¹ 如果输入的是一条 XPath,我会执行几次,每次执行后都会将其复制粘贴到电子表格中。如果输入的是两条或更多条 XPath,我只会执行一次。