2016-03-31 3 views
0

J'essaie d'obtenir le contenu de la page Web pour que je puisse extraire le texte affiché. J'ai essayé le code ci-dessous mais il m'obtient le code source html et non le HTML résultant.Récupère la sortie de la page Web en 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); 

Comparer le texte dans la variable str avec le code html dans les outils de développement dans le navigateur Chrome et vous obtiendrez des résultats différents.

Toutes les recommandations seront appréciées.

+0

Et la question est .......? –

+0

Chrome analyse HTML non seulement le récupère. Cela signifie manipuler des caractères spéciaux, des sauts de ligne, etc. Qu'est-ce que vous essayez exactement de faire? Ce que vous voyez est probablement plus proche de "View Page Source" ** edit ** Aussi javascript qui s'exécute sur la page, les iframes qui sont chargés et plus peuvent changer le rendu html par rapport à la source, donc ça ne va probablement jamais être exact de toute façon – Matt

+0

Et la question est "comment puis-je obtenir le texte qui est affiché dans le navigateur via C#". – Garagewerks

Répondre

0

Je suppose que vous voulez dire que vous voulez le texte de l'article. Si oui, vous devrez suivre une ligne de conduite différente. La page à laquelle vous faites référence est chargée avec un script client qui injecte des charges de contenu dans le document HTML de base. Ceci est fait en exécutant le script côté client. Vous devrez analyser le DOM après que le script est exécuté pour obtenir le contenu qui vous intéresse.

+0

Je vais poursuivre l'itinéraire javascript. Merci. – Garagewerks

0

Comme d'autres l'ont souligné, un navigateur Web réelle analysera le code HTML téléchargé et exécuter javascript contre elle, ce qui pourrait modifier sa contenu. Bien que vous puissiez essayer de faire cela vous-même, le plus simple est de demander à un vrai navigateur Web de le faire pour vous, puis de saisir les résultats. La solution la plus simple en C# serait d'utiliser le WebBrowser Control de Windows Forms, qui expose essentiellement IE à votre programme, vous permettant de le contrôler. Utilisez la méthode Navigate pour charger l'URL en question, puis utilisez la propriété Document pour naviguer dans le DOM. Vous pouvez, à ce stade, obtenir le outerHTML pour obtenir le contenu final du DOM en HTML.

Si vous n'écrivez pas un programme Windows et que vous êtes intéressé par un fonctionnement sans tête, jetez un oeil à PhantomJS. C'est un navigateur Web sans tête qui est scriptable à partir de javascript et vous donnerait une capacité similaire, mais pas en C#.