Javascript 如何从Chrome控制台复制一些数据?
我有一个网页,上面有一些我想提取的数据 因此,我打开Chrome Developers控制台并键入: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(
$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
,然后在你的控制台中测试。是的,我最初的想法是复制整个对象。