Это пример HTML, который я пытаюсь проанализировать с помощью Html Agility Pack в ASP.Net (C #).
<div class="content-div">
<dl>
<dt>
<b><a href="1.html" title="1">1</a></b>
</dt>
<dd> First Entry</dd>
<dt>
<b><a href="2.html" title="2">2</a></b>
</dt>
<dd> Second Entry</dd>
<dt>
<b><a href="3.html" title="3">3</a></b>
</dt>
<dd> Third Entry</dd>
</dl>
</div>
Необходимые значения:
- гиперссылка -> 1.html
- Текст привязки -> 1
- Внутренний текст od dd -> Первая запись
(я взял примеры первой записиздесь, но я хочу значения для этих элементов для всех записей в списке)
Это код, который я использую в настоящее время,
var webGet = new HtmlWeb();
var document = webGet.Load(url2);
var parsedValues=
from info in document.DocumentNode.SelectNodes("//div[@class='content-div']")
from content in info.SelectNodes("dl//dd")
from link in info.SelectNodes("dl//dt/b/a")
.Where(x => x.Attributes.Contains("href"))
select new
{
Text = content.InnerText,
Url = link.Attributes["href"].Value,
AnchorText = link.InnerText,
};
GridView1.DataSource = parsedValues;
GridView1.DataBind();
Проблема в том, что я получаю значения дляссылка и текст привязки корректно, но для внутреннего текста просто принимает значение первой записи и заполняет то же значение для всех других записей для общего числа раз, которое элемент встречается, а затем начинается со второй.Возможно, я не совсем ясен в своем объяснении, поэтому вот пример вывода, который я получаю с этим кодом:
First Entry 1.html 1
First Entry 2.html 2
First Entry 3.html 3
Second Entry 1.html 1
Second Entry 2.html 2
Second Entry 3.html 3
Third Entry 1.html 1
Third Entry 2.html 2
Third Entry 3.html 3
В то время как я пытаюсь получить
First Entry 1.html 1
Second Entry 2.html 2
Third Entry 3.html 3
Я довольно новичок вHAP и у меня очень мало знаний о xpath, поэтому я уверен, что я делаю что-то не так, но я не мог заставить его работать, даже потратив на это часы.Любая помощь будет высоко ценится.