저는 처음으로 htmlagilitypack에서 일하는 학생입니다. 현재 값을 가져 오기 위해 HTML을 필터링하고 있습니다.
foreach (HtmlNode link in bodyNode.SelectNodes("//span[@class='content-b']"))
{
if (link.InnerText.Contains("Name"))
{
//MessageBox.Show("Found");
textBox1.Text += "Name : " + ?????;
}
textBox1.Text += link.InnerText;
}
보시다시피 현재 노드에 "NAME"값이 있는지 확인하고 있다면 다음 노드 값을 가져 오려고합니다. 이 일을 도와 주시면 매우 감사 할 것입니다.
이름의 값은 다음 노드에 있습니다. <div class='content-b'>THIS IS MY NAME</div>
이것은 <div class='content-b'>THIS IS MY NAME</div>
.. 어떻게 문제를 해결하기 위해 다음 노드를 얻으려고 C #에게 말할 수 있습니까?
고맙습니다.
업데이트 : 여기에 작동하는 HTML 코드 조각이 있습니다.보기 흉하게 보입니다. 죄송합니다. 도와 드릴 수 없습니다.
<span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Name of the Author: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">Undertaker</font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Name movie: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">Some Movie Name</font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Room Online: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">skype123</font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Subsites and site: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">google.nl</font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Year: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">2013. </font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Genre: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">Horror</font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Length: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class="">00:35:45 </font></font></span></span></span></span><span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font class="">Description: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font class=""><font>Paragraph 1</font><font>Paragraph 2</font><font>Paragraph 3</font></font><br></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font>Video Format: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font>MP4 </font></font></span></span></span></span> <span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font>Video: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font>MPEG4 Video (H264) 720x404 29.97fps 1000Kbps </font></font></span></span></span></span><span class="post-align" style="text-align: center;"><span style="font-family: Kristen ITC;"><span style="font-size: 16px; line-height: normal;"><span style="color: #009933;"><span class="content-b"><font><font>Audio: </font></font></span></span> <span style="font-size: 12px; line-height: normal;"><span class="content-b"><font><font>AAC 44100Hz stereo 96Kbps</font></font></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
고맙습니다.
첫째, 문서에는 class="content-b"
가 없습니다. 그들은 모두 contet-b
로 철자가되어 있습니다.
둘째, HTML 형식이 올바르지 않기 때문에 NextSibling
이 작동하지 않습니다. 기준과 일치하는 다음 노드를 수동으로 가져와야합니다. 이 상황에서는 foreach
루프를 사용할 수 없습니다.
결과는 다음과 같습니다.
var nodes = bodyNode.SelectNodes("//div[@class='contet-b']").ToList();
for( int i =0; i < nodes.Count; i++)
{
var link = nodes[i];
if (link.InnerText.Contains("Name"))
{
textBox1.Text += "Name : ";
if (i + 1 < nodes.Count)
{
// append the value of next matching `div` node
textBox1.Text += nodes[i + 1].InnerText.Trim();
i++; // skip this node
}
}
}
당신이 찾고있는 것은 노드의 NextSibling 속성입니다. 귀하의 예 :
foreach (HtmlNode link in bodyNode.SelectNodes("//div[@class='content-b']"))
{
if (link.InnerText.Contains("Name"))
{
//MessageBox.Show("Found");
textBox1.Text += "Name : " + link.NextSibling.InnerText;
}
textBox1.Text += link.InnerText;
}