C # WebClient загружает только частичный HTML - PullRequest
0 голосов
/ 13 апреля 2010

Я работаю над некоторым приложением для очистки, я хотел попытаться заставить его работать, но столкнулся с проблемой. Я заменил исходное назначение очистки в приведенном ниже коде на веб-страницу googles, просто для тестирования. Кажется, что моя загрузка не все, я отмечаю, что в теле и html-тегах отсутствуют закрывающие теги. Как я могу получить это, чтобы загрузить все? Что не так с моим примером кода:

string filename = "test.html";

WebClient client = new WebClient();            
string searchTerm = HttpUtility.UrlEncode(textBox2.Text);            
client.QueryString.Add("q", searchTerm);
client.QueryString.Add("hl", "en");
string data = client.DownloadString("http://www.google.com/search");

StreamWriter writer = new StreamWriter(filename, false, Encoding.Unicode);
writer.Write(data);
writer.Flush();
writer.Close();

Ответы [ 3 ]

4 голосов
/ 13 апреля 2010

Веб-страницы Google теперь представлены в формате HTML 5, т. Е. Теги BODY и HTML могут быть автоматически закрыты - вот почему Google их опускает (хотите верьте, хотите нет, но сохраняет их пропускную способность).

См. Эту статью .

Вы можете написать HTML5 либо в режиме «HTML / SGML» (который позволяет опускать закрывающие теги, как это делал HTML до XHTML), либо в «XHTML», который следует правилам XML, требуя закрытия всех тегов.

То, что браузер выберет для анализа страницы, зависит от того, отправляете ли вы Content-type заголовок text/html для синтаксиса HTML / SGML или application/xhtml+xml для синтаксиса XHTML. (Источник: Синтаксис HTML5 - HTML против XHTML )

0 голосов
/ 13 апреля 2010

http://www.google.com/search не имеет закрывающих тегов.

0 голосов
/ 13 апреля 2010

... На странице Google нет закрывающих тегов для <body> и <html>. Поговорим о сумасшедшей оптимизации ...

...