Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Парсинг исходника страницы


Автор: W1zArD 5.2.2009, 08:52
Добрый день. Возникла проблема.
По адресу: "http://www.google.ru/ie?q=test&num=100" необходимо получить все ссылки.
У меня встал вопрос, что быстрее webBrowser.Links или Regex.
выбрал regex.

собственно паттерн - @"href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))"

примерный вариант того как он ищет:
http://www.russian.language.ru/test.htm&gt;Study
http://www.test.etoast.ru/&gt;Психологические
http://www.test.com/&gt;&lt;em&gt;Test&lt;/em&gt;.com
http://tests.kulichki.com/&gt;Тесты.
http://www.lidenz.ru/online-test/&gt;Free
http://grudina.info/newyear/test.php&gt;Новогодний
http://www.rg.ru/test&gt;Тест
http://test.allbest.ru/&gt;Тесты
http://www.socionika.info/test.html&gt;Тест
http://test.bio-met.ru/&gt;Психологический
http://aeterna.ru/test.php&gt;Тесты

исходный вариант:
... href=http://www.regular-expressions.info/>

вобщем как мне выбрать все что до символа ">", т.е. в этом вся и загвоздка, найду все что до ">" и все...



рабочий вариант, но грузит cpu на 100% - new Regex(@"(?<=<(\S|\s)*)((?<=(href=('|"")+))|(?<=(href=))[^('|"")])([^'>""\s)]*)(?=('|""|[\S])?)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

Автор: Bogdan1024 5.2.2009, 13:18
Засеки время выполнения ;)
А XmlReader'ом пробовал работать? Мне кажется что так будет быстрее всего.

Автор: W1zArD 5.2.2009, 14:23
мб, посоветуете самый оптимальный вариант?
а как тут XmlReaderom пробегаться?
можно пример или хотя бы в 2-х словах объяснить

спасибо smile

Автор: diadiavova 5.2.2009, 14:45
Попробуй воспользоваться http://code.msdn.microsoft.com/SgmlReader штучкой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)