Вырезать часть HTML
Пробовал обрабатывать всё через WebRequest, WebResponse и подсовывать в WebBrowser.
Но получается какая то ерунда. Картинок нет, всё кривое.
Код:
webBrowser1.DocumentText = "<img src=\"http://i.codenet.ru/www/images/logo.gif\" />";
это ли имелось ввиду?
Цитата: bagie2
а где код?
это ли имелось ввиду?
Код:
webBrowser1.DocumentText = "<img src=\"http://i.codenet.ru/www/images/logo.gif\" />";
это ли имелось ввиду?
Пробую загрузить простую страничку, без изменений.
Код:
Uri uri = new Uri(textBox3.Text);
WebRequest request = WebRequest.Create(uri);
WebResponse respons = request.GetResponse();
webBrowser1.DocumentStream = respons.GetResponseStream();
WebRequest request = WebRequest.Create(uri);
WebResponse respons = request.GetResponse();
webBrowser1.DocumentStream = respons.GetResponseStream();
//кстати
Цитата:
Данный ответ должен быть закрыт, чтобы не исчерпать системные ресурсы. Поток ответа может быть закрыт с помощью вызова Stream.Close или Close.
но закрыть сразу ответ вы не сможете, иначе ничего не загрузится. мне кажется лучше сначала считать данные полностью и потом уже присваивать DocumentStream значение.
Цитата: bagie2
все пути к изображениям, таблицам стилей и т.д. должны быть абсолютными
//кстати
но закрыть сразу ответ вы не сможете, иначе ничего не загрузится. мне кажется лучше сначала считать данные полностью и потом уже присваивать DocumentStream значение.
//кстати
но закрыть сразу ответ вы не сможете, иначе ничего не загрузится. мне кажется лучше сначала считать данные полностью и потом уже присваивать DocumentStream значение.
Пробую так:
Код:
Uri uri = new Uri(textBox3.Text);
WebRequest request = WebRequest.Create(uri);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
text = text.Replace(@"src=""/", "src=\"http://" + uri.Host + "/");
text = text.Replace(@"href=""", "href=\"http://" + uri.Host + "/");
webBrowser1.DocumentText = text;
WebRequest request = WebRequest.Create(uri);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
string text = reader.ReadToEnd();
text = text.Replace(@"src=""/", "src=\"http://" + uri.Host + "/");
text = text.Replace(@"href=""", "href=\"http://" + uri.Host + "/");
webBrowser1.DocumentText = text;
Картинки прорисовываются, но проблема с текстом.
Такое впечатление, что после того, как я передаю путь к таблице стилей, то с стилей всё качается в напрямую, в обход WebRequest, WebResponse.
Или я что-то не так сделал?
конечно напрямую =) WebBrowser будет сам скачивать и картинки и стили и всё остальное.
Цитата: bagie2
конечно напрямую =) WebBrowser будет сам скачивать и картинки и стили и всё остальное.
Да…
Тогда такой вариант не подходит :)
Каким образом можно вырезать часть HTML?
У меня был второй вариант, написать прокси сервер, и пускать трафик через него. Но как написать простой прокси сервер не знаю. Да и как заставить компонент браузера работать через проскю тоже не знаю.
покуда браузер обычно все равно скачивает файлы в дисковый кэш то можно самому загрузить все стили, картинки, сохранить во временный каталог. потом загрузить сам хтмл и поправить в нем все пути.