Html Agility Pack - проблемы с заголовками и ссылками

0
<article class="four columns">
<header class="four columns alpha">
    <h2 class="trunker">
        <span id="MainContentPlaceHolder_ctl12_ctl16_MovieTitleH2" title="En du elsker">En du elsker</span>
    </h2>
    <hr />
</header>
<figure class="two columns alpha">


    <div id="MainContentPlaceHolder_ctl12_ctl16_insertVignetTop"></div>
    <div id="MainContentPlaceHolder_ctl12_ctl16_insertVignetBottom"></div>
    <div id="MainContentPlaceHolder_ctl12_ctl16_insertTrailer"><div id="playerPoster" class="playTrailer" name="14532" onclick="x=1;"></div></div>
    <a id="MainContentPlaceHolder_ctl12_ctl16_MovieDetailsHyperLink" title="En du elsker" href="MovieDetails.aspx?movieId=3383"><img src="http://mother.poweredbyintegra.dk/posters/enduelsker_hoej_m.jpg" id="MainContentPlaceHolder_ctl12_ctl16_ImageUrlImg" /></a>
</figure>
<div id="MainContentPlaceHolder_ctl12_ctl16_ShowTimesDiv" class="two columns omega">

<span class="ticket"><input name="ctl00$MainContentPlaceHolder$ctl12$ctl16$ctl03" type="button" class="ticket" value="Læs mere" onclick="location.href=&#39;MovieDetails.aspx?movieId=3383&#39;" /></span><span class="ticket"><input name="ctl00$MainContentPlaceHolder$ctl12$ctl16$ctl04" type="button" class="ticket" value="18:30" onclick="location.href=&#39;OrderMovieTicket.aspx?showId=11837&#39;" /></span></div>

Мне нужно получить title="En du elsker" и ссылку href="MovieDetails.aspx?movieId=3383" для совместной работы. Я хочу, чтобы он делал то же самое для следующих 3.

Вот как я попытался:

@using HtmlAgilityPack;

@{
HtmlWeb hw = new HtmlWeb(); 
hw.AutoDetectEncoding = true;
hw.OverrideEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");

HtmlDocument doc = hw.Load("ronnebio.dk/NextDaysProgramme.aspx?offset=0");

 //doc.DetectEncodingAndLoad(
 List<string> temp = new List<string>();
 int count = 1;

foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//div[@class='inner clearfix']"))
{
    if (count > 3)
    {
        break; 
    }

    string linkhref = link.GetAttributeValue("href", "");
    string titel = link.InnerText;
        if (linkhref != "" 
        && linkhref.Contains("MovieDetails.aspx")
        && !temp.Contains(titel))
    {
        temp.Add(titel);
        count++;

        <div class="nyhedlink"><a href="@linkhref" target="_blank">- @titel</a></div>
    }
}
}

Я не могу найти проблему? надеюсь, что вы сможете решить isue- спасибо

Теги:
html-agility-pack

2 ответа

0
Лучший ответ

Придавать в URL вы выложили с помощью следующего запроса можно получить только флиртует три тегов в следующем виде: a

var list = (from item in doc.DocumentNode.Descendants("a")
                       where
                           item.ParentNode.Name.Equals("figure") &&
                           item.ParentNode.Attributes["class"].Value == "two columns alpha"
                       select new
                              {
                                  Title = item.Attributes["title"].Value,
                                  Link = item.Attributes["href"].Value
                              }).Take(3);

и вы можете это сделать:

foreach (var item in list)
{
    /* for example */
    <div class="nyhedlink"><a href="@item.Link" target="_blank">- @item.Title</a></div>       
}
  • 0
    И как тогда должен выглядеть законченный скрипт? (где я могу поставить "элемент VAR" в?)
  • 0
    @ user3605428 Смотрите обновленный ответ
Показать ещё 3 комментария
0

спасибо m8... все еще немного не знает, куда положить первый код, который вы написали. Таким образом, он находит только один txt, но повторяет его много раз. Мне нужны только первые 3 названия и href.

 @using HtmlAgilityPack;

@{
    HtmlWeb hw = new HtmlWeb(); 
    hw.AutoDetectEncoding = true;
    hw.OverrideEncoding = System.Text.Encoding.GetEncoding("ISO-8859-1");

    HtmlDocument doc = hw.Load("http://ronnebio.dk/NextDaysProgramme.aspx?offset=0");

     //doc.DetectEncodingAndLoad(
     List<string> temp = new List<string>();
     int count = 1;

    var element = (from item in doc.DocumentNode.Descendants("a")
               where item.Id == "MainContentPlaceHolder_ctl12_ctl16_MovieDetailsHyperLink"
               select new
                      {
                          Title = item.Attributes["title"].Value,
                          Link = item.Attributes["href"].Value
                      }).First();

            <div class="nyhedlink"><a href="@element.Link" target="_blank">- @element.Title</a></div>

        }
    }
}
  • 0
    У меня есть небольшая проблема. когда он показывается на нашей странице, он не показывает буквы fraøå fra danish keybord? только символы вместо. я не могу понять проблему, так как они выглядят одинаково 2 сценария, которые я получил с тем же ISO-8859-1 ?? есть идеи?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню