我有一个网页,其中包含一些我想要提取的数据 所以我打开Chrome Developpers Console并输入:
$x('//a[contains(@class, "link-class")]/text()')
但我有:
[text, text, text]
而不是字符串列表。有没有可以获得我可以复制到我的记事本,excel等的strins列表?
答案 0 :(得分:3)
$ x()返回DOM元素(在本例中为文本节点),因此您需要从内部提取字符串的步骤。
你可能会更幸运$x('//a[contains(@class, "link-class")]').map( elt => elt.innerText );
答案 1 :(得分:2)
您可以使用Array.forEach(..)
方法浏览$x()
返回的DOM元素并记录其数据:
$x('//a[contains(@class, "link-class")]/text()').forEach((a) => console.log(a.data))
对于以\n
分隔的一串文本,请使用:
$x('//a[contains(@class, "link-class")]/text()').map((a) => a.data).join('\n')
答案 2 :(得分:2)
如果你有一个数组并想要打印它,你可以简单地做:
console.log(arr.join("\n"));
在你的情况下
console.log(
$x('//a[contains(@class, "link-class")]/text()')
.map(el => el.innerText)
.join("\n")
);
你也可以格式化它们:
console.log(arr.map((el, ix) => ix + " : " + el.innerText).join("\n"));
得到:
0:text1
1:text2
答案 3 :(得分:2)
在控制台中,您实际上只需键入copy('some data')
即可复制到剪贴板。您仍然需要先格式化信息。
试试这个:
const formatted = JSON.stringify($x('//a[contains(@class, "link-class")]/text()').map((a) => a.data));
copy(formatted);