2016-03-31 2 views
0

Я пытаюсь получить итоговое содержимое веб-страницы, чтобы извлечь текст. Я попытался использовать код ниже, но он получает мне исходный html, а не полученный html.Получить вывод веб-страницы в C#

string urlPath = "http://www.cbsnews.com/news/jamar-clark-protests-follow-decision-not-to-file-charges-in-minneapolis-police-shooting/"; 
WebClient client = new WebClient(); 
string str = client.DownloadString(urlPath); 

Сравните текст в переменной ул с HTML в Инструменты разработчика в браузере Chrome, и вы получите разные результаты.

Любые рекомендации будут оценены.

+0

И вопрос .......? –

+0

Хромированный HTML-код не только извлекает его. Это означает обращение с особыми символами, новыми символами и т. Д. Что именно вы пытаетесь сделать? То, что вы видите, вероятно, ближе к «View Page Source» ** edit ** Также javascript, который выполняется на странице, загружаемые iframe и многое другое, может изменить отображаемый html по сравнению с источником, поэтому он, вероятно, никогда не будет быть точным anyways – Matt

+0

И вопрос: «Как получить текст, отображаемый в браузере через C#». – Garagewerks

ответ

0

Я предполагаю, что вы имеете в виду, что хотите текст статьи. Если это так, вам нужно будет следовать другому курсу действий. На странице, на которую вы ссылаетесь, загружается клиентский скрипт, который вводит множество содержимого в базовый HTML-документ. Это делается путем выполнения клиентского сценария. Вам нужно будет проанализировать DOM после того, как скрипт будет выполнен, чтобы получить интересующий вас контент.

+0

Я продолжу маршрут javascript. Благодарю. – Garagewerks

0

Как указывали другие, фактический веб-браузер будет анализировать загруженный HTML и выполнять javascript против него, потенциально изменяя его содержание. Хотя вы можете попытаться сделать это самостоятельно, самый простой путь - попросить реального веб-браузера сделать это для вас, а затем захватить результаты.

Простым решением в C# было бы использование WebBrowser Control из Windows Forms, которое по существу предоставляет IE вашей программе, позволяя вам управлять им. Используйте метод Navigate для загрузки соответствующего URL-адреса, а затем используйте свойство Document для перемещения по DOM. Вы можете в этот момент получить outerHTML, чтобы получить окончательный контент DOM как HTML.

Если вы не пишете программу для Windows и не заинтересованы в работе без головок, посмотрите на PhantomJS. Это безгласный браузер Webkit, доступный для сценариев из javascript, и даст вам аналогичную возможность, хотя и не на C#.

Смежные вопросы