• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

парсинг Html странички на Asp.

  • Автор темы Автор темы labas
  • Дата начала Дата начала
L

labas

Стоит задача:

1,парсинг страницы хххх.html
2, распечатать из нее таблицу <table id="ууу">. Естественно в хххх.html есть много других таблиц, текста и другого мусора.

Помогите разобраться плз!
....... или хотя бы подскажите каким путем это лучше реализовывать :о(

HTML переводить в XML-файл и из них тянуть инфу?...а если парсинг каждый день несколько раз делать надо будет?
Или сохранить текст из файла в ...куда?..... стринг? масив? или еще куда то?
......а может можно ""на лету обрабатывать, без сохранения файла?
 
Регулярные вырвжения должны помочь.
 
для явы есть куча парсеров которые позволяют работать с html как с xml. поищите анологи для дотнета.
регулярные выражения всме хороши, вот только кривая обучения ну очень крутая=)
 
то, что с регулярными выражениями придется разбираться уже вижу.

а что с кривой обучения?.......На первый взгляд там ничего особенно сложного нет.........или это только на первый взгляд? :(
 
Делал похожую задачу следующим образом. На просторах инета попадается такая либа как SgmlReaderDll.dll. В ней содержится полезный класс SgmlReader, с помощью которого можно перегонять HTML в XHTML примерно таким путем:
Код:
string inputHtml = ...; // HTML-код распарсиваемой странички

SgmlReader reader = new SgmlReader();
reader.DocType = "HTML";
reader.InputStream = new StringReader(inputHtml);

StringWriter sw = new StringWriter();
XmlTextWriter w = new XmlTextWriter(sw);

reader.Read();
while (!reader.EOF)
{
w.WriteNode(reader, true);
}

w.Flush();
w.Close();

string xhtml = sw.ToString(); // получили XHTML
Далее остается этот XHTML подвергнуть XSLT-преобразованию, которое и выдернет нужную табличку. Сам XSLT можно вынести в какие-нибудь внешние ресурсы/настройки и править в случае изменения структуры анализируемой странички.
Составить XSLT, который просто найдет и выдернет элемент table с определенным id, - задача не слишком сложная, я думаю. Работает сие достаточно шустро (на загрузку странички, во всяк, времени уходило больше).
 
LuMee Даже если пойти этим путем, то непонятно зачем XSLT-преобразованию ... xpath нормально должен справится ...
 
LuMee Даже если пойти этим путем, то непонятно зачем XSLT-преобразованию ... xpath нормально должен справится ...
Ну в принципе да. У меня там просто посложнее обработка делалась малясь. В данном случае XPath'а хватить должно.
 
LuMee , за код спасибо..а можно совсем разжевать куда его кидать, как подвергать XSLT-преобразованию и выводить таблицу? :)

Знаю, что вопросы дурацкие, но никогда с этим не пересекалась :о( а одновременно разбираться с несколькими вещами - дело долгое :о/
 
XSLT, как уже выяснили, не нужен, можно продолжить приведенный мною выше фрагмент так:
Код:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xhtml);
XmlNode node = xmlDoc.SelectSingleNode("descendant::table[@id='yyy']");
Теперь в node содержится узел, соответствующий искомой таблице. Если нужно вывести это добро, скажем, в консоль, то можно сделать так:
Код:
XmlTextWriter writer = new XmlTextWriter(Console.Out);
writer.Formatting = Formatting.Indented;
node.WriteTo(writer);
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab