Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > HttpWebRequest и HttpWebResponse урезаны?


Автор: gogzor 2.11.2008, 19:12
Всем привет. 
Вот сейчас пишу программку. Там нужно из HTML страницы парсить все hidden поля. Так вот , я это делаю по привычке с помощью классов HttpWebRequest & HttpWebResponse. 
Но когда я пытаюсь парсить содержимое страницы , полученое в ходе операции...то hidden полей там нет..
А если я например смотрю HTML страницы в браузере (FireFox) через плагин Firebug , то все поля видны. Можно ли как то получить эти поля классами HttpWebRequst & HttpWebResponse? Или есть ещё какие-нибудь варианты?

Автор: Bogdan1024 2.11.2008, 20:10
Код

            Settings1 s = new Settings1();
            HttpWebRequest RQ = (HttpWebRequest)HttpWebRequest.Create(s.URI);
            HttpWebResponse RS = (HttpWebResponse)RQ.GetResponse();
            System.IO.FileStream fs = new System.IO.FileStream(s.SaveToFile, System.IO.FileMode.Create);
            System.IO.StreamWriter sw = new System.IO.StreamWriter(fs);
            System.IO.StreamReader sr = new System.IO.StreamReader(RS.GetResponseStream());
            sw.Write(sr.ReadToEnd());
            sr.Close();
            sw.Close();
            fs.Close();
            RS.Close();      

У меня почему-то видны все невидимые поля. Как ты читаешь что у тебя их не видно?

Автор: Dims 3.11.2008, 15:11
Наверняка ошибка в регулярном выражении. Никакой урезанности по hidden полям быть не может, так как hidden это команда для рендерера HTML, а HttpWebRequest получают исходный HTML-код не интерпретируя его. 

Вы посмотрите в отладчике содержимое прочитанного текста-то.

Автор: actual 3.11.2008, 15:16
Как вариант, скрытые поля могут генерироваться сервером только при наличии определённых куков.. или вообще ява-скриптом, что есть самый плохой вариант для вас.

Автор: Dims 3.11.2008, 15:20
А вообще-то да, и такое может быть.

Можно проверить при помощи программы Wget. Это простейший браузер-скачивальщик. Если там будут присутствовать эти скрытые поля, то, значит, ни куки, ни джаваскрипт не участвуют в проблеме.

Автор: Bogdan1024 3.11.2008, 17:08
Если невидимые поля генерируются javascript'ом, то их не будет видно и в исходнике страницы.

Автор: Dims 3.11.2008, 17:53
Он каким-то Firebug-ом открывал. Я вижу, он DOM модель показывает. Возможно, эта примочка показывает и то, что сгенерировано динамически. Но я не знаю, не работал с ней.

Автор: gogzor 3.11.2008, 18:53
Проблема решена.

FireBug показывает всё статическое и динамическое. При запросе добавил UserAgent - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0).
В нём эти поля возможно получить. Движок который я парсил , не показывает поля в FireFox, хотя они статичные.

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