У меня есть электронное письмо в формате 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:
Есть идеи, как получить bodyText таблицы html?
Спасибо.
Привет, Рокки, я добавил изображение, показывающее пример этой таблицы.
Можно ли использовать jQuery?
А нельзя что то с document.querySelector('table td:eq(0)') сделать что ли? Также ... трудно ответить, если мы не знаем, как выглядит HTML.
Должен признать, у меня нет опыта использования jQuery. Мой код очень простой, как и приведенный выше. Должен ли я использовать jQuery для такого анализа?
Извините, я не ясно выразился. Я хотел попросить вас опубликовать пример HTML в виде текста.
Правда, мне сначала было бы проще иметь текстовый формат, но у меня его нет.
где определяется sources? Что на самом деле вы пытаетесь найти в таблице?
На самом деле это очень просто. Поскольку я просто мог разбирать горизонтальные строки html. Я хотел бы разобрать столбцы (по вертикали). Скажем, я хотел бы получить список имен из таблицы. И это будет список {Джейн ДУБЛИН, Спенсер ХОУЛИНГ} в поле "Имя". Для меня было бы проще, если бы данные были в одной строке (html не беспокоил бы, он был бы правильно проанализирован с помощью приведенного выше кода).
Прочтите это: stackoverflow.com/a/1732454/1220550
Вопросы, требующие помощи («почему не работает / как заставить этот код работать?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для его воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный воспроизводимый пример.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не предоставили достаточно подробностей в своем вопросе, чтобы я мог дать вам ответ на вашу конкретную проблему, но похоже, что вы просто спрашиваете, как получить 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"
Почему бы просто не найти строку имени в таблице?
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' в таблице. Цель состоит в том, чтобы извлечь имена. См. Комментарий Джейн к вопросу, который начинается со слов «На самом деле, это очень просто».
см. окончательный обновленный ответ, должен дать вам именно то, что вам нужно.
да, вначале я не был уверен, что вы ищете что-то более конкретное.
Привет, ребята, большое спасибо за ваши быстрые ответы. Но позвольте мне сказать иначе: я понятия не имею, что такое коды HTML-таблиц, поэтому мой синтаксический анализатор действует так, как если бы он был самым тупым из всех; он захватывает случайные сообщения электронной почты bodyMails и извлекает из них все, что захочет. К счастью, есть простые части, которые можно легко извлечь, потому что данные обычно следуют за соответствующим тегом, например: Имя: Джейн. Но когда дело доходит до таблиц с одним тегом, у вас есть несколько строк, это становится сложным и, по-видимому, невозможно отменить с помощью только запросов регулярных выражений.
Если вы «понятия не имеете, что такое коды HTML-таблиц», как вы можете их проанализировать? Либо у вас есть HTML-текст для синтаксического анализа, либо вам нечего анализировать. Если вам нужна помощь с этим, вам нужно будет предоставить хотя бы несколько примеров (текст html) того, что вы хотите проанализировать (в своем вопросе). Возможно, мы сможем обобщить несколько примеров, чтобы получить решение, которое будет работать для вас во всех (или, по крайней мере, в большинстве) случаев.
Недостаточно информации для ответа. Можете ли вы опубликовать пример рассматриваемого html?