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

Javascript 如何从Chrome控制台复制一些数据?,javascript,google-chrome-devtools,Javascript,Google Chrome Devtools,我有一个网页,上面有一些我想提取的数据 因此,我打开Chrome Developers控制台并键入: $x('//a[contains(@class, "link-class")]/text()') 但我有: [text, text, text] 而不是字符串列表。是否有可以复制到记事本、excel等中的字符串列表?您可以使用数组。forEach(…)方法遍历$x()返回的DOM元素并记录它们的数据: $x('//a[contains(@class, "link-class")]/text(

我有一个网页,上面有一些我想提取的数据 因此,我打开Chrome Developers控制台并键入:

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

[text, text, text]

而不是字符串列表。是否有可以复制到记事本、excel等中的字符串列表?

您可以使用
数组。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')
$x()返回DOM元素(在本例中为文本节点),因此需要一个步骤从内部提取字符串。你可能会有更多的运气

$x('//a[contains(@class, "link-class")]').map( elt => elt.innerText );

如果您有一个数组,并且想要漂亮地打印它,您可以简单地执行以下操作:

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

在控制台中,您实际上只需键入
copy('some data')
,它就会复制到您的剪贴板上。您仍然需要先格式化信息

试试这个

const formatted = JSON.stringify($x('//a[contains(@class, "link-class")]/text()').map((a) => a.data));

copy(formatted);

将一个控制台中的所有数据用“\n”分隔是个好主意,但当我使用您的代码时,我会在控制台上获得[object Text]行的列表。缺少
.map(el=>el.innerText)
以从dom元素中获取文本。我们应该删除
/Text()
,对吗?您的代码工作正常。但是我怎样才能把它全部连接到一个控制台帖子上呢?@GhostKU你想要一个文本数组吗?我想要用“\n”分隔的文本字符串@MrGeek这个日志记录了正确的信息吗
console.dir($x('//a[contains(@class,“link class”)]/text())
No,你应该添加一个map
$x(…).map((a)=>a.data))
。你知道你可以在这个页面中测试,只需将类从
link class
更改为
post-tag
,然后在你的控制台中测试。是的,我最初的想法是复制整个对象。