Разбор основного текста HTML с помощью Javascript

У меня есть электронное письмо в формате HTML, содержащее текст и таблицы, которые я пытаюсь проанализировать с помощью javascript. Разбор текста работает нормально, мне нравится просто запускать регулярное выражение, чтобы получить то, что мне нужно из содержимого, например:

var name     = mail.bodyText.match(/Name:\s*(.*)/);

Теперь столовая часть довольно хитрая. Скажем, таблица содержит 3 столбца, и я хочу получить данные только из первого столбца, в котором перечислены связанные данные. Когда я печатаю следующее:

var column1Data = mail.bodyText.match(/Column1([\s\S]*?)/);
    if (column1Data) {
        var column1DataSplit = sources[1].split("\n");}
}

Данные не извлекаются.

Пример таблицы html:

Разбор основного текста HTML с помощью Javascript

Есть идеи, как получить bodyText таблицы html?

Спасибо.

Недостаточно информации для ответа. Можете ли вы опубликовать пример рассматриваемого html?

Rocky Sims 28.10.2018 10:29

Привет, Рокки, я добавил изображение, показывающее пример этой таблицы.

Jane Dublin 28.10.2018 10:37

Можно ли использовать jQuery?

keenthinker 28.10.2018 10:39

А нельзя что то с document.querySelector('table td:eq(0)') сделать что ли? Также ... трудно ответить, если мы не знаем, как выглядит HTML.

putvande 28.10.2018 10:42

Должен признать, у меня нет опыта использования jQuery. Мой код очень простой, как и приведенный выше. Должен ли я использовать jQuery для такого анализа?

Jane Dublin 28.10.2018 10:46

Извините, я не ясно выразился. Я хотел попросить вас опубликовать пример HTML в виде текста.

Rocky Sims 28.10.2018 10:51

Правда, мне сначала было бы проще иметь текстовый формат, но у меня его нет.

Jane Dublin 28.10.2018 10:57

где определяется sources? Что на самом деле вы пытаетесь найти в таблице?

lacostenycoder 28.10.2018 11:03

На самом деле это очень просто. Поскольку я просто мог разбирать горизонтальные строки html. Я хотел бы разобрать столбцы (по вертикали). Скажем, я хотел бы получить список имен из таблицы. И это будет список {Джейн ДУБЛИН, Спенсер ХОУЛИНГ} в поле "Имя". Для меня было бы проще, если бы данные были в одной строке (html не беспокоил бы, он был бы правильно проанализирован с помощью приведенного выше кода).

Jane Dublin 28.10.2018 11:12

Прочтите это: stackoverflow.com/a/1732454/1220550

Peter B 28.10.2018 11:39

Вопросы, требующие помощи («почему не работает / как заставить этот код работать?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для его воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный воспроизводимый пример.

Asons 28.10.2018 11:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
11
286
2

Ответы 2

Вы не предоставили достаточно подробностей в своем вопросе, чтобы я мог дать вам ответ на вашу конкретную проблему, но похоже, что вы просто спрашиваете, как получить html из первого столбца в каждой строке таблицы . Вот как вы могли это сделать.

<table id = "myTable">
  <tr>
    <td>r1c1</td>
    <td>r1c2</td>
  </tr>
  <tr>
    <td>r2c1</td>
    <td>r2c2</td>
  </tr>
</table>

<script type = "text/javascript">
  var tds = document.querySelectorAll('td:nth-child(1)');
  for (td of tds) {
    console.info(td.innerHTML);
  }
</script>

Вывод в консоль:

"r1c1"
"r2c1"

https://codepen.io/rockysims/pen/NOJMap?editors=1011

Почему бы просто не найти строку имени в таблице?

var td = document.querySelectorAll('td:nth-child(1)');
for (var i in td) {
  var nameData = td[i].innerHTML
  if ( i > 0 && nameData ) // skip header row
  console.info(nameData)
}

Джейн не пытается проверить, присутствует ли 'Jane Dublin' в таблице. Цель состоит в том, чтобы извлечь имена. См. Комментарий Джейн к вопросу, который начинается со слов «На самом деле, это очень просто».

Rocky Sims 28.10.2018 11:43

см. окончательный обновленный ответ, должен дать вам именно то, что вам нужно.

lacostenycoder 28.10.2018 11:57

да, вначале я не был уверен, что вы ищете что-то более конкретное.

lacostenycoder 28.10.2018 11:59

Привет, ребята, большое спасибо за ваши быстрые ответы. Но позвольте мне сказать иначе: я понятия не имею, что такое коды HTML-таблиц, поэтому мой синтаксический анализатор действует так, как если бы он был самым тупым из всех; он захватывает случайные сообщения электронной почты bodyMails и извлекает из них все, что захочет. К счастью, есть простые части, которые можно легко извлечь, потому что данные обычно следуют за соответствующим тегом, например: Имя: Джейн. Но когда дело доходит до таблиц с одним тегом, у вас есть несколько строк, это становится сложным и, по-видимому, невозможно отменить с помощью только запросов регулярных выражений.

Jane Dublin 28.10.2018 12:19

Если вы «понятия не имеете, что такое коды HTML-таблиц», как вы можете их проанализировать? Либо у вас есть HTML-текст для синтаксического анализа, либо вам нечего анализировать. Если вам нужна помощь с этим, вам нужно будет предоставить хотя бы несколько примеров (текст html) того, что вы хотите проанализировать (в своем вопросе). Возможно, мы сможем обобщить несколько примеров, чтобы получить решение, которое будет работать для вас во всех (или, по крайней мере, в большинстве) случаев.

Rocky Sims 29.10.2018 14:19

Другие вопросы по теме