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


Автор: theHelg 25.6.2009, 13:12
Добрый день!

Достаю страницу через 
Код

            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);


Затем пытаюсь перевести html в xml, чтобы использую xpath можно было достучаться до нужного элемента.

Использовал статью и код проекта отсюда: http://blogs.gotdotnet.ru/personal/poigraem/PermaLink.aspx?guid=d0fd3f90-d3e4-4940-a62b-4fcfc172b85e

В итоге, простые сайты (или точнее, хорошо структурированные) типа yandex.ru SgmlReader парсит на ура, но с более сложными - лезет на сайт http://www.w3.org/ и скачивает обновления, что ли?

Фидлер показывает:

GET http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
200 OK

GET http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
200 OK

GET http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
200 OK

GET http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
200 OK

А как можно это все скачать и подложить куда-нибудь в папку солюшина?
А то на каждый запрос к SgmlReaderу он лезет и скачивает эти файлы...

Как я понял, это происходит в случае, если в заголовке страницы стоит:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Как это можно побороть?

Автор: diadiavova 26.6.2009, 00:39
Там есть несколько свойств для работы с DTD, я посмотрел вроде как свойство Dtd как раз позволяет использоват кэшированные версии схем. Кроме того, для разбора хтмл схема вообще ни к чему, так что можно перед разбором просто удалить доктайп и всё.
Кроме того, взгляни http://developer.mindtouch.com/SgmlReader. Там есть форум по sgmlreader'ру и кроме того там как они пишут лежит исправленная его версия. Попробуй.

Автор: theHelg 26.6.2009, 13:28
Спасибо, попробую

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