powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Парсер
25 сообщений из 163, страница 2 из 7
Парсер
    #38358323
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУТак на то есть виндовой IHTMLDocument2 / IHTMLDocument3.Не знал, но подозревал что должно быть. :-)
Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384
...
Рейтинг: 0 / 0
Парсер
    #38358331
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Не знал, но подозревал что должно быть. :-)
Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384 Пасиб. :-)
...
Рейтинг: 0 / 0
Парсер
    #38358338
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одно удовольствие с IHTMLDocument3 работать, всё типизированно и понятно. Никаких говносборок с кодплексов.

Как городить огород (это еще простенький пример с двумя дивами с айдишником и стилем + табличка) на регулярках - я не знаю, это просто жесть неподдерживаемая какая-то :) За такое нужно банить и выжигать моск газовой горелкой.
...
Рейтинг: 0 / 0
Парсер
    #38358391
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОдно удовольствие с IHTMLDocument3 работать, всё типизированно и понятно. Никаких говносборок с кодплексов.

Упасть не встать.

Код: c#
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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
using System;

using HtmlAgilityPack;

namespace HtmlParser
{
    class Program
    {
        static void Main(string[] args)
        {
            var html = @"<table>
<tr>
<td>
ФИО
</td>
<td>
ТЕЛЕФОН
</td>
<td>
Идентификационный код
</td>
<td>
Прочая инфа
</td>
</tr>

<tr>
<td>
Пупкин
</td>
<td>
06711111111
</td>
<td></td>
<td>
Примечание
</td>
</tr>
<tr><td>Пупкин</td><td>06711111111</td><td></td><td>Примечание</td></tr>
</table>";

            var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html);

            foreach(var tr in htmlDocument.DocumentNode.SelectNodes("/table/tr[position() > 1 and count(td) = 4]"))
            {
                Console.WriteLine("ФИО: {0}", tr.SelectSingleNode("./td[1]").InnerText);
                Console.WriteLine("Телефон: {0}", tr.SelectSingleNode("./td[2]").InnerText);
                Console.WriteLine("Идентификационный код: {0}", tr.SelectSingleNode("./td[3]").InnerText);
                Console.WriteLine("Прочая инфа: {0}", tr.SelectSingleNode("./td[4]").InnerText);
            }
        }
    }
}
...
Рейтинг: 0 / 0
Парсер
    #38358506
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучУпасть не встать.
Падай и не вставай.

Microsoft.mshtml это полноценная объектная модель. Её ты можешь так же обвязать в хелпер с удобными методами. Основной плюс в том, что не нужны никакие сторонние педали. Функционал HtmlDocument красив, никто с этим не спорит, строки кода тут никто не считает. Но зачем он мне, если я те же задачи решу с помощью нативного функционала?
...
Рейтинг: 0 / 0
Парсер
    #38358687
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНо зачем он мне, если я те же задачи решу с помощью нативного функционала?
И самое главное это то, что Microsoft.mshtml богаче и гибче, чем конструкции на xpath ! Самая сложная логика разбора html по зубам.
...
Рейтинг: 0 / 0
Парсер
    #38358777
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУНо зачем он мне, если я те же задачи решу с помощью нативного функционала?
И самое главное это то, что Microsoft.mshtml богаче и гибче, чем конструкции на xpath ! Самая сложная логика разбора html по зубам.Во-первых, это не "нативный функционал", а банальная обертка над COM-компонентом со всеми вытекающими "удобными" IHTMLDocument7 и столь же удобным деплоем.
Во-вторых, список критериев, по которым оценивается "богатость и гибкость", пожалуйста.
...
Рейтинг: 0 / 0
Парсер
    #38358838
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кпропущено...
Не знал, но подозревал что должно быть. :-)
Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384
За такой говнокод нужно тыкать носом в эту кучу, чтобы впредь неповадно было:
-большая навозная куча почти на станицу
-масса тормознутых foreach
-hardcode с индексам
-на закуску-типичная лузерская ошибка с добавлением в список, которая сразу говорит о школярских знаниях net и как это садит производительность
-кусок говнокода, который даже не оформлен в виде функции

Зы для таких остолопов внешние библиотеки - то, что доктор прописал.их, по крайнеймере пишут нечайники
...
Рейтинг: 0 / 0
Парсер
    #38359002
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384
За такой говнокод нужно тыкать носом в эту кучу, чтобы впредь неповадно было:
-большая навозная куча почти на станицу
-масса тормознутых foreach
-hardcode с индексам
-на закуску-типичная лузерская ошибка с добавлением в список, которая сразу говорит о школярских знаниях net и как это садит производительность
-кусок говнокода, который даже не оформлен в виде функции

Зы для таких остолопов внешние библиотеки - то, что доктор прописал.их, по крайнеймере пишут нечайникиНасчет тормознутости foreach сомневаюсь, с индексами не согласен (в этой задаче в любом случае придется что-то захардкодить, не индексы, так селекторы) но вот это просто убило:
Код: c#
1.
2.
3.
4.
IHTMLElementCollection tableRows = tableElement.all;
  foreach (IHTMLElement row in tableRows)
    {
       if (row is HTMLTableRow)

Двойка за такой код была бы высочайшей похвалой. all сам по себе вызывает легкий нервный тик, но так как этот код не покинет песочницы ie, в принципе можно забить. Однако тут муся умудрился блеснуть незнанием объектной модели, которую сам же воспевает. html-таблица обладает свойством rows, которое содержит коллекцию из HTMLTableRow, исключающую необходимость в последнем говноусловии. Так же для справки: HTMLTableRow.cols содержит коллекцию догадайтесь чего.

Весь этот чудовищный бред с кучей циклов можно сократить до одного, заменив тернистый путь до строк одним выражением:
Код: c#
1.
tableRows = document.querySelectorAll("#main .data tr");

Не знаю как в IE, но в Опере
.querySelectorAll("div") и .querySelectorAll(".my") работает примерно вдвое быстрее, чем .getElementsByTagName("div") и .getElementsByClassName("my") соответственно.Селекторы работают с восьмой версии IE, то есть уже 5 лет. Стыдоба.

Отдельно умиляет говноссылка на data.html, которая есть у всех, но работает, по всей видимости, только у зарегистрированных анальных рабов муси, ибо перекидывает на форму логина.
...
Рейтинг: 0 / 0
Парсер
    #38359006
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про табличку забыл:
Код: c#
1.
tableRows = document.querySelectorAll("#main .data table tbody tr");
...
Рейтинг: 0 / 0
Парсер
    #38359104
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучВо-первых, это не "нативный функционал", а банальная обертка над COM-компонентом со всеми вытекающими "удобными" IHTMLDocument7 и столь же удобным деплоем.
Во-вторых, список критериев, по которым оценивается "богатость и гибкость", пожалуйста.
Во-первых, это нативный функционал и он есть уже в винде Microsoft.mshtml.dll , никаких левых dll не нужно. Тот факт, что это com обертка, не значит ничего плохого. Про "вытекающие" поподробней, пожалуйста.
Во-вторых, "богатость и гибкость" выражается в процедурности подхода и его типизации, а не банальных ошметках xml, порожденных из кривого тупого xpath запроса.
...
Рейтинг: 0 / 0
Парсер
    #38359112
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384
За такой говнокод нужно тыкать носом в эту кучу, чтобы впредь неповадно было:
-большая навозная куча почти на станицу
-масса тормознутых foreach
-hardcode с индексам
-на закуску-типичная лузерская ошибка с добавлением в список, которая сразу говорит о школярских знаниях net и как это садит производительность
-кусок говнокода, который даже не оформлен в виде функции

Зы для таких остолопов внешние библиотеки - то, что доктор прописал.их, по крайнеймере пишут нечайники
За твою тупость тебя давно уже надо подвесить ногами вверх у московского зоопарка, чучело.
- обычный типизированный подход с циклами и поиском нужных элементов, нет задачи сокращать его или как-то ужимать
- насчет тормознутости foreach пойди бабушке своей сказки расскажи, поиск через getElementById с последующим перебором по className - это самое быстрое получение нужных html элементов, которое только видовал свет, по такому же принципу работают и селекторы в jquery
- у Нахлобуча тоже хардкод с индексами и что? Тут обсуждаются приемы работы с html, бестолочь.
- смотри выше, тут речь не о добавлении элементов куда-то, а обсуждается подход работы с html. У тебя всегда мозг через заднее место работал, вследствие чего ты затруднялся сосредоточиться на конечных деталях. Банальный диагноз параноика.
- какая в задницу функция, ты о чем? Убей себя
...
Рейтинг: 0 / 0
Парсер
    #38359121
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, вопрос не в оптимизации парсинга таблички, а в демонстрации полного перебора типизированных элементов. Если и ты этого не понимаешь, то сходи в сад со всеми остальными. Вброс про querySelectorAll ты так и не довел до конца: полностью рабочий код в студию. А то нагадил, а за собой не убрал - типично и в твоем стиле. Позорище. Говноссылку на data.html обходи стороной, ты не достоин её качать.
...
Рейтинг: 0 / 0
Парсер
    #38359153
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСон Веры ПавловныНасколько я помню, он не умеет XPath.И не должен уметь. Об абсолютно html-валидную конструкцию <i><b></i></b> xpath сломает зубы.
Мда. Вы думаете, что XPath разбирает текстовые строки? XPath разбирает DOM-документ, в который парсится в том числе и html - даже если его разметка была сделана в лучших html-ных традициях с незакрытыми тэгами. Зубы XPath'у там ломать абсолютно не об что.
AntonariyВ html5 появился document.querySelector/querySelectorAll, не уступающий по мощности xpath. Селекторы jQuery это копипаста querySelector.
Очень сильно уступающий, т.к. основан на синтаксисе CSS-селекторов, который весьма слаб. Попробуйте с его помощью выбрать из 3-й таблицы документа все rows, которые содержат только пустые ячейки (без вложенных элементов). С помощью XPath это вполне возможно.
МСУа не банальных ошметках xml, порожденных из кривого тупого xpath запроса.
МСУ в своем репертуаре - то, что он не любит/не умеет готовить, обильно снабжает яркими эмоциональными эпитетами. Это, конечно же, придает аргументации взвешенность и обоснованность.
...
Рейтинг: 0 / 0
Парсер
    #38359205
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныМСУа не банальных ошметках xml, порожденных из кривого тупого xpath запроса.
МСУ в своем репертуаре - то, что он не любит/не умеет готовить, обильно снабжает яркими эмоциональными эпитетами. Это, конечно же, придает аргументации взвешенность и обоснованность.
Полно тебе :) Я не против xpath, я против сторонних приблуд с кодплекса от пионеров, когда есть в штатном распоряжении более вкусные вещи, такие как IHTMLDocument3. Полностью типизированные html элементы должны больше радовать, чем пугать.
...
Рейтинг: 0 / 0
Парсер
    #38359210
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ведь IHTMLDocument3 помимо чтения, позволяет еще создавать элементы. То есть представляет собой самый полный функционал при работе с html. Так нахрена мне качать какие-то гусли с интернетов?
...
Рейтинг: 0 / 0
Парсер
    #38359224
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariy, вопрос не в оптимизации парсинга таблички, а в демонстрации полного перебора типизированных элементов. Если и ты этого не понимаешь, то сходи в сад со всеми остальными. Вброс про querySelectorAll ты так и не довел до конца: полностью рабочий код в студию. А то нагадил, а за собой не убрал - типично и в твоем стиле. Позорище. Говноссылку на data.html обходи стороной, ты не достоин её качать.Обосрался — обтекай, быдло
...
Рейтинг: 0 / 0
Парсер
    #38359267
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныAntonariyВ html5 появился document.querySelector/querySelectorAll, не уступающий по мощности xpath. Селекторы jQuery это копипаста querySelector.
Очень сильно уступающий, т.к. основан на синтаксисе CSS-селекторов, который весьма слаб. Попробуйте с его помощью выбрать из 3-й таблицы документа все rows, которые содержат только пустые ячейки (без вложенных элементов).Ну ок, уступает. Но с другой стороны необходимость в таких хитромудрых условиях встречается крайне редко и как правило символизирует неправильную постановку задачи или решение в духе муси: "оно должно показать, как правильно писать лютейший говнокод и в жопу оптимизацию".
...
Рейтинг: 0 / 0
Парсер
    #38359296
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМСУAntonariy, вопрос не в оптимизации парсинга таблички, а в демонстрации полного перебора типизированных элементов. Если и ты этого не понимаешь, то сходи в сад со всеми остальными. Вброс про querySelectorAll ты так и не довел до конца: полностью рабочий код в студию. А то нагадил, а за собой не убрал - типично и в твоем стиле. Позорище. Говноссылку на data.html обходи стороной, ты не достоин её качать.Обосрался — обтекай, быдло
Муслима, я твой говнокод только мельком смлтрел(уж слишком смердит ), но antonairy тебя правильно носом ткнул в all&if.только полный урод будет развешивать подобную клюкву вместо одного linq запроса с нужными условиями выборки.

2antoniary, foreach при прочих равных условиях медленней for из-за двух дополнительных локальных переменных, плюс перечечслитель гораздо медленней индексного доступа, который оптимизирует il

2тс, сделай нужный xmlreader в пару строчек и закрывай этот говнотопик
...
Рейтинг: 0 / 0
Парсер
    #38359301
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМСУAntonariy, вопрос не в оптимизации парсинга таблички, а в демонстрации полного перебора типизированных элементов. Если и ты этого не понимаешь, то сходи в сад со всеми остальными. Вброс про querySelectorAll ты так и не довел до конца: полностью рабочий код в студию. А то нагадил, а за собой не убрал - типично и в твоем стиле. Позорище. Говноссылку на data.html обходи стороной, ты не достоин её качать.Обосрался — обтекай, быдло
Код будет, утырок? Или снова сливаешься в унитаз?
...
Рейтинг: 0 / 0
Парсер
    #38359305
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa2тс, сделай нужный xmlreader в пару строчек и закрывай этот говнотопикxmlreader не прокатит, у ТСа код не xml-валидный.
...
Рейтинг: 0 / 0
Парсер
    #38359311
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМСУпропущено...

Быстренько накидал рецептик, щупай :)

http://codearticles.ru/articles/2384 Пасиб. :-)
После таких спасиб я с опаской буду садится в поезд.если программасты такие, то почемудругие должны быть лучше.ладно regionmanager-тема для таких нкподъемная, но ui, который зависит от wcf и подобный маразм-это уже чере край

Алексей, бери мсу за ручку, да на курсы
...
Рейтинг: 0 / 0
Парсер
    #38359312
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Долбосева, опять ты обращался по самые помидоры. Линкю запрос тут вообще мимо кассы. Букварь в зубы и срочно читать про селекторы, бестолочь
Циклы тут в самый раз, ибо селектор точно так же раскладывается в цикл по всему дом элементу с поиском по фильтру.
...
Рейтинг: 0 / 0
Парсер
    #38359314
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyпропущено...
Обосрался — обтекай, быдло
Код будет, утырок? Или снова сливаешься в унитаз?Мне с тобой не по пути

Той строчки, что я уже написал, вменяемому человеку достаточно, а ты высри еще кирпич и обтекай дальше.
...
Рейтинг: 0 / 0
Парсер
    #38359316
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про XmlReader вообще абасаца. Долбосева, ты признак тупости и шизофрении
...
Рейтинг: 0 / 0
25 сообщений из 163, страница 2 из 7
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Парсер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]