|
Парсер
|
|||
---|---|---|---|
#18+
Знаю что уже много обсуждали данный вопрос но только он у меня несколько необычный но очень простой. Библиотеки парсеры не использую так как функционал простой тем не менее появилась проблема которую пока даже не знаю как решить. И так есть html таблица шапка и одна строка (более строк не бывает) Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
ИНН я не указывал так как есть не обязательные поля так вот в программе я это разбираю так Код: c# 1. 2. 3. 4. 5. 6.
//построив два массива далее я успешно их обрабатывал но появилась еще одна "контора" которая тоже присылает html файл он 1:1 как и другие кроме одного все идет сплошным текстом Код: html 1.
И вот если между тегами нет текста (<td></td>) то в переменную data не добавляется ничего и длинна массива head становится больше чем data Как должно быть Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
как есть сейчас Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
data[2] = ""; - хоть оно и пустое но оно должно быть Подскажите как это можна решить, что бы индексы строк массива data из-за этого не "съезжали" ? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 17:00 |
|
Парсер
|
|||
---|---|---|---|
#18+
VIT2708Подскажите как это можна решить, что бы индексы строк массива data из-за этого не "съезжали" ?Вообще не писать подобный говнокод будет лучшим решением. Это же фактически xml. Если в ячейках нет невалидных html-тегов типа <br>, то работать с этим текстом надо как с xml. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 18:14 |
|
Парсер
|
|||
---|---|---|---|
#18+
Antonariy, вообще то теги <br> есть я их здесь не приводил так как это не критично ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 18:41 |
|
Парсер
|
|||
---|---|---|---|
#18+
VIT2708, с помощью регулярок можно: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Если кроме данных требуются имена колонок, то делаем так: Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 20:41 |
|
Парсер
|
|||
---|---|---|---|
#18+
bazile,Нахлобуч ахтунг ( Последовательность действий) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 21:11 |
|
Парсер
|
|||
---|---|---|---|
#18+
Нахлобуч, побереги глаза :) Оба регулярных выражения состоят из повторяющихся частей так что их несложно понять. При желании можно "дать подсказку" с помощью форматирования: Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2013, 23:50 |
|
Парсер
|
|||
---|---|---|---|
#18+
За парсинг html/xml с помощью регвыров - убивать. P.S. http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 03:54 |
|
Парсер
|
|||
---|---|---|---|
#18+
Фигней не майтесь, возьми HtmlAgilityPack там уже давно все украдено придумано до нас! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 09:20 |
|
Парсер
|
|||
---|---|---|---|
#18+
авторЗа парсинг html/xml с помощью регвыров - убивать ух как грозно и категорично. Так уж сложилось, что для парсинга html использую RegExp'ы и особых проблем не испытываю. HtmlAgilityPack смотрел, пробовал, но предпочтение отдаю RegExp, просто мне так удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 09:44 |
|
Парсер
|
|||
---|---|---|---|
#18+
Ermakдля парсинга html использую RegExp'ы и особых проблем пока не испытываю Поправил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 09:51 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныЗа парсинг html/xml с помощью регвыров - убивать. Категоричность сестра догматизма. Регулярные выражения это инструмент со своими плюсами и минусами. В общем случае я бы не стал применять регулярки для разбора html, но в данном конкретном случае считаю их применение оправданным из-за простой структуры документа. Если он усложнится - например, добавятся атрибуты у тегов - , то тогда следует переключиться на HtmlAgilityPack. В заметке Jeff Atwood об этом тоже сказано: http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html So, while I may attempt to parse HTML using regular expressions in certain situations , I go in knowing that: - It's generally a bad idea. - Unless you have discipline and put very strict conditions on what you're doing , matching HTML with regular expressions rapidly devolves into madness, just how Cthulhu likes it. - I had what I thought to be good, rational, (semi) defensible reasons for choosing regular expressions in this specific scenario . It's considered good form to demand that regular expressions be considered verboten, totally off limits for processing HTML, but I think that's just as wrongheaded as demanding every trivial HTML processing task be handled by a full-blown parsing engine. It's more important to understand the tools, and their strengths and weaknesses, than it is to knuckle under to knee-jerk dogmatism . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 10:13 |
|
Парсер
|
|||
---|---|---|---|
#18+
bazile, дело не только в структуре документа, а еще и в его содержимом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 10:27 |
|
Парсер
|
|||
---|---|---|---|
#18+
МСУпроблем пока не испытываю Поправил :) Может быть и так. Разработку парсеров заказывают часто, так что ждемс... PS. Просто набил руку на работе с RegEx. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:00 |
|
Парсер
|
|||
---|---|---|---|
#18+
Всегда парсил HTML через родной IHTMLDocument2 (mshtml.tlb, ieframe.dll). Работало как часы. HtmlAgilityPack щупал, но в реальных проектах решил не использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:13 |
|
Парсер
|
|||
---|---|---|---|
#18+
bazileРегулярные выражения это инструмент со своими плюсами и минусами. Не затруднит озвучить плюсы регулярок по сравнению с парсером в данном конкретном случае? Вариант неумения пользоваться парсером в отличие от регулярок не предлагать. МСУВсегда парсил HTML через родной IHTMLDocument2 (mshtml.tlb, ieframe.dll). Работало как часы. HtmlAgilityPack щупал, но в реальных проектах решил не использовать. Насколько я помню, он не умеет XPath. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:43 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныbazileРегулярные выражения это инструмент со своими плюсами и минусами. Не затруднит озвучить плюсы регулярок по сравнению с парсером в данном конкретном случае? Вариант неумения пользоваться парсером в отличие от регулярок не предлагать.Не надо тащить "левую" библиотеку в проект. Regex для простых случаев самое то. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:47 |
|
Парсер
|
|||
---|---|---|---|
#18+
Алексей КНе надо тащить "левую" библиотеку в проект. Regex для простых случаев самое то. Это трудоемко? Затратно? Еще что-то? Установка того же HTML Agility Pack через NuGet - дело 10 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:50 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНасколько я помню, он не умеет XPath.И не должен уметь. Об абсолютно html-валидную конструкцию <i><b></i></b> xpath сломает зубы. В html5 появился document.querySelector/querySelectorAll, не уступающий по мощности xpath. Селекторы jQuery это копипаста querySelector. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:53 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КНе надо тащить "левую" библиотеку в проект. Regex для простых случаев самое то. Это трудоемко? Затратно? Еще что-то? Установка того же HTML Agility Pack через NuGet - дело 10 секунд.Если задача решается десятком строчек без "левой" библиотеки, зачем тащить в проект "левую" библиотеку? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:54 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНасколько я помню, он не умеет XPath. А должен уметь? Для этого курим ObjectXPathNavigator. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:57 |
|
Парсер
|
|||
---|---|---|---|
#18+
Алексей КНе надо тащить "левую" библиотеку в проект. Regex для простых случаев самое то. Я тоже не люблю левые сборки. Так на то есть виндовой IHTMLDocument2 / IHTMLDocument3. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 11:59 |
|
Парсер
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныНе затруднит озвучить плюсы регулярок по сравнению с парсером в данном конкретном случае? - простое решение для простой задачи используя только средства базовой библиотеки - избегаем использовование внешней библиотеки - нет необходимости тратить время на изучение новой библиотеки (для тех кто ранее не работал с HtmlAgilityPack) При этом конечно помним про недостаток - риск превращения регулярки и кода в ктулху-стиль как это называет Атвуд. Как только появились признаки такого стиля следует переключиться на другие решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2013, 12:54 |
|
|
start [/forum/topic.php?fid=20&msg=38358257&tid=1404236]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 162ms |
0 / 0 |