2017-03-07 10 views
-2

私は(あなたの心にタグやコンテンツを挿入、概要)例えば、ウェブサイトの内容を含む文字列を、持っているウェブサイトのコンテンツを余分なものなしに取得するにはどうすればよいですか?私は余分なしでコンテンツを取得するにはどうすればよい

$string = '<html> 
    <head> 
    <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> 
    <title>Some title 
    </title> 
    </head> 
    <body>Navigation 
    <br><div>CSS</div> 
    <br><div>JavaScript</div> 
    <br>Advertising 
    <br><div>Content</div> 
    <br>Navigation 
    <br>Advertising 
    <br>Inprint 
    <br> 
    </body> 
</html>' 

?コンテンツでは、私は「コンテンツ」という言葉を意味するのではなく、ウェブサイトが実際に持っている内容を意味します。

たとえば、フォーラムでは、ナビゲーション、タグ、広告なしでフォーラムのエントリーが必要です。

私はstring s = Regex.Replace(string, "<.*?>", String.Empty);を試しましたが、タグを取り除いていますが、コンテンツを取得していません。

ウェブサイト上に反復され、悪用される可能性のあるパターンがいくつかありますか?

+0

「余分な」とは何を意味するのか分かりません。あなたの期待される成果を投稿できますか? – smead

+0

HTMLを解析するには、Html Agility Packを使用します。 –

+0

@smeadが更新されました。 –

答えて

0

HTML Agility Pack NuGetパッケージを使用できます。それはかなり柔軟性があり、あなたはそれを達成したいものと非常に具体的になることができます。ここで

は、ページ内のすべてのハイパーリンクを取得する方法の例です:

HtmlDocument document2 = new HtmlDocument(); 
document2.Load(@"C:\Temp\sample.txt") 
HtmlNode[] nodes = document2.DocumentNode.SelectNodes("//a").ToArray(); 
foreach (HtmlNode item in nodes) 
{ 
    Console.WriteLine(item.InnerHtml); 
} 

より多くの例がhereあります。

+0

良いスタートですが、主な問題は解決しません。主な問題は、どのようにコンテンツをフィルタリングするか、つまり 'SelectNodes'や' foreach'ループで何を使うかです。私は 'if(item.InnerText.Length> 250 &&!item.InnerHtml.Contains("> "))'を試みましたが、それほど簡単ではありませんでした。それから、 'div'や' span'のようなタグの特定の属性の値に 'full'や' article'が含まれていることが分かりました。まだそれほど満足できるものではありません。 –

+0

@pdee 'content'を定義してください。あなたの質問には例があります。 – CodingYoshi

関連する問題