2016-07-20 2 views
0

이 HTML 코드에서 html 태그로부터 속성 및 데이터를 가져와야합니다. 이 예는 다음과 같습니다HtmlAgillityPack 사용 데이터 및 속성 HTML 태그를 얻는 방법은 무엇입니까?

...

<tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=MaxATAKK" onclick="win(this.href, 560, 500, 0, 1); return false;">Gefle - Kalmar</a></td><td class="result"><a href="../matchdetails.php?matchid=MaxATAKK" onclick="win(this.href, 560, 500, 0, 1); return false;">4:2</a></td><td class="odds best-betrate" data-odd="3.53"></td><td class="odds" data-odd="3.37"></td><td class="odds" data-odd="2.04"></td><td class="last-cell nobr date">18.07.2016</td></tr> 

...

그래서, 내가 TD 태그와 속성간에 데이터를 얻을 필요 (데이터 홀수).

이 내 C# 코드입니다 :

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using HtmlAgilityPack; 

namespace bexscraping 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/"; 
      HtmlWeb web = new HtmlWeb(); 
      HtmlAgilityPack.HtmlDocument doc = web.Load(url); 
      foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//table")) 
      { 

       //node.Remove(); 

       outputLabel.Text += node.InnerText; 
      } 



     } 

    } 

} 

어떤 제안? 감사!

+0

시도 필터링 "승산". – CiccioRocca

+0

감사합니다. 링크가 있습니까? 예를 들어 주시겠습니까? 다시 한 번 감사드립니다! – Marci

답변

1

여기가 일부 Msdn입니다. 예 : XPath Examples; XPath Reference

당신의 조각에 따르면 당신은데이터 이상한 속성을 포함하는 모든 태그를 TD를 선택할 수 있습니다. 이, XPath는 문서가 말한대로, "클래스"에 동일 속성을 포함하는 모든 노드 TD를 선택합니다 ("// TD [@class =" "확률" "]") .SelectNodes : XPath는을 사용하여

private void Form1_Load(object sender, EventArgs e) 
{ 

     string url = "http://www.betexplorer.com/soccer/sweden/allsvenskan/results/"; 
     HtmlWeb web = new HtmlWeb(); 
     HtmlAgilityPack.HtmlDocument doc = web.Load(url); 
     var nodes = doc.DocumentNode.SelectNodes("//td[@data-odd]"); 
     foreach (HtmlNode node in nodes) 
     { 
      //Here process your node 
      //Example: to get data-odd value 
      var val = node.GetAttributeValue("data-odd", ""); 
     } 
} 
+0

감사합니다. 나는 그것을 시도했지만 단 하나의 오류 메시지가 나타납니다 : "이름 확률은 현재 상황에 존재하지 않습니다". 뭐가 문제 야? 다시 한 번 감사합니다 – Marci

+0

@Marci 죄송합니다, 나는 코드를 테스트했지만 나쁘게 복사했습니다. 나는 대답을 업데이트한다. 홀수 (0)가 아니라 노드. – CiccioRocca

+0

수정을 시도했지만 다른 오류가 발생했습니다. HtmlAgilityPack.HtmlAttributeCollection '에'Item '정의가 없으며'HtmlAgilityPack '형식의 첫 번째 인수를 허용하는 확장 메서드'Item '이 없습니다. HtmlAttributeCollection '. 아마도 using 지시문이나 어셈블리에 대한 참조가 누락되었습니다. – Marci