Требуется предложение: лучший способ разбора HTML в C # - PullRequest
0 голосов
/ 27 мая 2009

Это мой вопрос. Какой лучший способ извлечь определенную информацию из HTML-страницы. В настоящее время я делаю следующее:

  1. Загрузить страницу с помощью WebClient

  2. Преобразование полученных данных в строку с использованием UTF8Encoding

  3. Преобразование строки в XML

  4. Используя связанные с Xml классы из .NET Framework, извлекаем нужные данные

Это то, что я сейчас делаю в обобщенном виде. Кто-нибудь знает о другом методе? Что-то, что может быть быстрее или проще?

С наилучшими пожеланиями, Кирил

PS: я слышал о тестовой среде под названием Watin

, который позволяет вам делать что-то подобное, но не очень много исследовал

Ответы [ 4 ]

5 голосов
/ 27 мая 2009

Похоже, вы выяснили, как получить данные страницы (это самая простая часть).

В остальном, лучшей управляемой библиотекой, которую я использовал для выполнения задач такого типа, является HTML Agility Pack . Это открытый исходный код и очень зрелый, полностью написан на .NET. Он обрабатывает искаженный HTML и может делать то, что вам нужно, двумя различными способами:

  • Собственно поддерживает XPATH и XML-подобные запросы к HTML DOM. Он предназначен для имитации библиотеки XML .NET, поэтому все, что вы можете сделать с XML с помощью .NET, вы можете сделать с HTML с помощью этого.

  • Поддерживает создание корректного XML из HTML, поэтому вы можете использовать любые инструменты XML.

2 голосов
/ 27 мая 2009

Для ваших нужд анализа я рекомендую HTML Agility Pack .

Для фактического получения HTML используйте WebRequest class

0 голосов
/ 27 мая 2009

Это можно немного упростить с помощью метода WebClient.DownloadString, который я считаю.

Дополнительные сведения о разборе см. В других ответах, поскольку я не пробовал пакет Agility HTML.

0 голосов
/ 27 мая 2009

Если вы не работаете с идеально сформированным XHTML Регулярные выражения больше подойдут для анализа html?

Watin позволяет создавать скрипты нажатий кнопок, вызовов скриптов и т. Д. На веб-странице через IE (может ли он использовать другие браузеры, не уверен?). Я не думаю, что это достигнет того, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...