如何从Chrome控制台复制某些数据?

时间:2017-09-08 15:47:10

标签: javascript google-chrome-devtools

我有一个网页,其中包含一些我想要提取的数据 所以我打开Chrome Developpers Console并输入:

$x('//a[contains(@class, "link-class")]/text()')

但我有:

[text, text, text]

而不是字符串列表。有没有可以获得我可以复制到我的记事本,excel等的strins列表?

4 个答案:

答案 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);