2016-10-25 1 views
0

私が取り組んでいるプロトタイプは、Webサイト内に深いネストされたIFrameを抽出する必要があります。クラスを含むすべての要素を見つける必要がありますが、XPathはHtmlAgilityPackのPCLディストリビューションでは使用できないため、this answerは機能しません。 .Descendants()をthis answerとして使用する別のアプローチは、私が試してみたところ、子孫の子どもを考慮していないように思われる、あるいはそうであれば、どうやって。HtmlAgilityPack、PCL、XPathなし:クラスごとにすべての要素を取得するにはどうすればよいですか?

site'sデータ構造は、このようなものです:

html 
    body 
    div class mh-container 
     div class mh-wrapper 
     div class mh-main 
      div id main-content 
      article class post 
      div class entry-content <- has multiple (2) divs with os_poll 
       div class os_poll 
       div class os_widget_container <- TARGET 
        iframe name os_frame <- need data of the 'src' attribute 

私の目標は、os_pollのクラスを持つすべての要素を取得し、その後、IFRAMEにアクセスし、自分のSRCデータを取得することです。 XPathは機能しないので、ノードをナビゲートして子供の子供を得る方法はわかりません(私はHAPの新機能です)。これに対処する方法はわかりません。

答えて

0

私は、PCLプロジェクトでクラスごとに要素を見つける方法を見つけました。しかしXPath is not available in PCLのため、HtmlAgilityPackではなくAngleSharpを使用する必要があります。 AngleSharpリンクを確認してください。

AngleSharp内のクラスですべての要素を選択します。

string html; 
using (var client = new HttpClient()) 
{ 
    string = await client.GetStringAsync("http://your.content.com/some.html"); 
} 
var parser = new HtmlParser(); 
var doc = parser.Parse(html); 
var divs = doc.All.Where(e = > e.LocalName == "div" && e.ClassList.Contains("your-class")); 

注:上記のウェブサイトを追加するos_poll要素のためにはJavaScriptが必要ですので、私は上記のリンク先サイトからのデータを使用していない、それはないだろうが作業。それはまったく別の問題であり、この質問の範囲外です。

関連する問題