Как скопировать некоторые данные из консоли Chrome?

1

У меня есть веб-страница с некоторыми данными, которые я хочу извлечь. Поэтому я открываю Консоль разработки Chrome и печатаю:

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

но у меня есть:

[text, text, text]

вместо списка строк. Есть ли какие-либо, чтобы получить список стрингов, которые я могу скопировать в свой блокнот, excel и т.д.?

Теги:
google-chrome-devtools

4 ответа

2

$ x() возвращает элементы DOM (в данном случае текстовые узлы), поэтому вам нужен шаг для извлечения строки изнутри. Возможно, вам повезет больше

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

Вы можете использовать метод Array.forEach(..) для прохождения через элементы DOM, возвращаемые $x() и регистрировать их данные:

$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')
  • 0
    Ваш код работает. Но как я могу объединить все это в один пост консоли?
  • 0
    @GhostKU Вы хотите массив текстов?
Показать ещё 2 комментария
1

В консоли вы можете просто набрать copy('some data') и скопировать в буфер обмена. Вам все равно придется форматировать информацию в первую очередь.

Попробуйте следующее:

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

copy(formatted);
  • 0
    @MrGeek Это выходит правильная информация? console.dir($x('//a[contains(@class, "link-class")]/text()'))
  • 1
    Нет, вы должны добавить карту $x(...).map((a) => a.data)) .
Показать ещё 3 комментария
1

если у вас есть массив и вы хотите его распечатать, вы можете просто сделать:

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

  • 0
    Отличная идея, чтобы все данные в одном посте консоли были разделены на '\ n', но когда я использую ваш код, я получаю список строк [object Text] на моей консоли.
  • 0
    .map(el => el.innerText) отсутствовал, чтобы получить текст из элемента dom.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню