2016-10-25 8 views
0

Прототип, над которым я работаю, нуждается в извлечении глубоко вложенного IFrame внутри веб-сайта. Мне нужно найти все элементы, содержащие класс, но XPath недоступен в дистрибутиве PCL для HtmlAgilityPack, поэтому this answer не работает. Другой подход использования .Descendants(), поскольку this answer предлагает, похоже, не работает, потому что я попытался, и Descendants(), похоже, не рассматривает детей детей, или если это так, я не знаю, как ,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 и получить свои данные в исходных текстах. Поскольку XPath не работает, и я не знаю, как перемещаться по узлам, чтобы получить детей детей (я новичок в HAP), я не знаю, как с этим бороться.

ответ

0

Я нашел способ найти элементы по классам в проектах PCL. Но для этого вам нужно будет использовать AngleSharp, а не HtmlAgilityPack, потому что XPath is not available in PCL. Проверьте ссылку 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")); 

Примечание: не использовать данные с сайта я связан выше, потому что сайт выше потребностей JavaScript для os_poll элементы, которые будут добавлены, не будет Работа. Это еще одна проблема целиком и выходит за рамки этого вопроса.

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