Вопрос

Как отремонтировать Malformed HTML с помощью C#? Отличным ответом был бы образец HTML Agility Pack!


Я очищаю сайт (для законного использования). HTML сайта в порядке, но есть некоторые раздражающие проблемы.

Один из способов, которым я мог бы пойти, было бы через регулярные выражения. Я использовал веб -сайт Expression для анализа проблем и регулярных выражений, необходимых для их исправления. Таким образом, одним из способов было бы использовать инструмент, такой как Regexbuddy Чтобы генерировать C# код для этих регулярных выражений.

Тем не менее, рекомендуемый инструмент для обработки узолового HTML в C# является HTML Agility Pack (HAP). Более того, я проанализировал лишь несколько страниц, и я боюсь, что будущие страницы будут содержать шаблоны, которые я еще не решил, и я не хотел бы входить в «Найдите ошибки на следующих нескольких страницах и исправьте их» бизнес. Так что, если бы у HAP уже есть твердое, всегда работающее решение, это было бы здорово. Проблема в том, что за исключением нескольких упоминаний здесь, поэтому я не смог найти никакой документации для этого инструмента, за исключением файла справки API объекта за объектом.

Итак - прежде чем я потрачу $ и время обучения на Regexbuddy (без бесплатной оценки версии) или сломал зубы на документацию HAP от API - есть ли простой способ сделать это? Образец HAP поможет ... :-)

Это было полезно?

Решение 2

То, что я взял из ответов здесь: 1) Если вы соскребаете веб -сайт, который вы не управляете, вы всегда вводите режим обслуживания, где вам нужно исправлять скребок каждый раз, когда макет страницы, которую вы царапаете Анкет 2) Если вы ограничены этим известным сайтом, почему бы не написать свой скребок, чтобы настроить проблемы

Итак, если мне нужно перейти в режим обслуживания, это должно быть как можно проще. Поэтому мой процесс заключается в следующем:

  1. я использую Webius Swexplorerautomation Чтобы обнаружить сцены на веб -страницах. Идея в том, что сцена - это коллекция условий, которые вы определяете для IE. Когда загружается веб -страница, IE пытается увидеть, какой набор условий выполнен (например, заголовок страницы «вход в учетную запись», страница содержит текстовое поле «Вход» A A «пароль»). Если обнаружен набор условий, соответствующих сцене, IE сообщает, что сцена была обнаружена. Эта модель предоставляет уровень абстракции - некоторые изменения на веб -странице могут перевести в изменения в файл сцены, сохраняя код от необходимости изменений. Кроме того, это защищает меня от модели IE, управляемой событием: я называю «сцену». Я оцениваю этот продукт, но я еще не уверен, что использую его, главным образом потому, что документация ужасна. Другая альтернатива - это Ватин, и еще одна причина, по которой я еще не купил SWEA эта статья обвиняя своего автора в спамке против Ватина.
  2. После получения веб -страницы я использую веб -сайт Expression для запуска проверки совместимости и идентификации ошибок.
  3. я использую Regexmagic удалить и исправить ошибки. Я действительно люблю этот инструмент. Конечно, иногда это меня убивает, потому что это не позволяет вам делать то, что должно быть действительно легко, но это сладкий, сладкий инструмент, и документация потрясающая.
  4. Наконец, после всех ошибок, которые я знаю, были исправлены, я использую пакет гибкости HTML для преобразования в XHTML - пересечь TS и DOT The IS, так сказать: все нижние случаи, цитаты по атрибутам и так далее.

Надеюсь это поможет!

Ави

Другие советы

Можете ли вы сказать мне, какие раздражающие проблемы у вас возникли?
Но вам не нужно использовать Regex для очистки HTML, HAP позволит вам получить доступ к элементам необработанного HTML с помощью запросов XPath.
И в основном вам нужно научиться xPath, чтобы узнать, как получить желаемые HTML -элементы.
Это действительно зависит от типа HTML, который вы анализируете, используя HAP.
Но есть несколько способов получить элементы.
как по ID или классу или даже вы можете получить элемент, который следует за другим элементом, который содержит заданный текст, подобный «Имя:», например.
ты можешь пойти в W3 Schools xpath Учебное пособие Для хорошего учебника XPath

Рекса не может быть использована для чистки HTML. Делает http://tidy.sourceforge.net/ Помогает?

Если вы соскребаете веб -сайт, который не управляете, вы всегда вводите режим обслуживания, где вам нужно исправлять свой скребок каждый раз, когда макет страницы, которую вы сощечиваете, изменения. Не имеет значения, используете ли вы корпусu003Ctd color="red"> d+u003C/td> Чтобы получить большой красный номер со страницы или, если вы используете синтаксический анализатор DOM, чтобы получить 3 -й ячейку во 2 -й строке в таблице с идентификационными номерами, чтобы получить то же самое. Реферат разрывается, если веб -мастер заменяет атрибут цвета на атрибут класса. Диачатор DOM ломается, если веб -мастер добавляет еще одну строку в верхнюю часть таблицы.

Если вы соскребаете большие части веб -страницы и хотите встроить их на свою собственную веб -страницу, может быть проще преодолеть ваше стремление к соответствию веб -стандартов и просто позволить браузеру выяснить, как отображать вещи.

Поскольку вы используете пакет гибкости HTML и знаете о возникновении проблем, если вы ограничены этим известным сайтом, почему бы не написать свой скребок, чтобы настроить проблемы при загрузке HTMldocument.

то есть: если вы знаете, что элемент всегда появляется после, вставьте элемент в первое дочернее положение тега .....

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top