2017-07-28 13 views
0

ウェブスクレイピングを学びたい。それで、私は練習を始めました。 XPathを使用してHTMLからdata-ad-idを取得しようとしています。このようなXPathで要素の属性を取得する

HTML構造:<a class="link--muted no--text--decoration result item" >ため

<body id="z1234"> 
    <div class="viewport"> 
     <div class="g-row"> 
      <div class="g-col-9"> 
       <div class="cBox cBox--content cBox--resultList"> 
        <div class="cBox-body cBox-body--resultitem dealerAd rbt-reg rbt-no-top"><a class="link--muted no--text--decoration result-item" href="url" data-ad-id="248059713"></a> 
       </div> 
      </div> 
     </div> 
    </div> 
</body> 

XPathが//*[@id="z1234"]/div[3]/div[4]/div[2]/div[1]/div[11]/aです。私が別の車を選ぶと、最後のdivだけが変更されます。私はこのノードから何かを得ることができない

var url = "https://suchen.mobile.de/fahrzeuge/search.html?damageUnrepaired=NO_DAMAGE_UNREPAIRED&isSearchRequest=true&maxPowerAsArray=KW&maxPrice=10000&minPowerAsArray=KW&minPrice=10000&scopeId=C"; 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      StreamReader sr = new StreamReader(response.GetResponseStream()); 
      string sourceCode = sr.ReadToEnd(); 

      HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
      document.LoadHtml(sourceCode); 




      var rows = document.DocumentNode.SelectNodes("//*[@id='z1234']/div[3]/div[4]/div[2]/div[1]/div[11]"); 


      foreach (var row in rows) 
      { 
       var id = row.SelectSingleNode("a[@data-ad-id]").InnerText; 
       Console.WriteLine("id:" + id); 
      } 
     } 

これによると、私はC#コードを記述します。それはnullです。 data-ad-idを取得するにはどうすればよいですか?

EDIT 私はC#のコードを変更:

var rows = document.DocumentNode.SelectNodes("//a[@data-ad-id]")[0]; 
var id = rows.Attributes["data-ad-id"].Value; 

今私は、サイトのコードを1としてdata-ad-id.

答えて

1

を得ることができ、私はあなたがその「AのためのInnerTextプロパティを持っていないことを感知することができ"タグ。それはDIVとIMGタグを含んでいます。

あなたは、迅速な応答を

//a[@data-ad-id]/@data-ad-id 
+0

感謝を使用して、データ・広告-IDを取得する必要があります!私はこれを試しましたが、 'data-ad-id'ではなく' car name'を取得しました。 @Ganesh Pandhere – heyaa

+0

C#コードがどのように書かれているのか分かりません。しかし私は、私が言及した方法で通常行う属性値を取得するコードを与えました。 –

+0

私はそれがあなたのために働いてくれることを願っています それ以外の場合は、参考になるSelectSingleNodeに関連するものを見つけようとしました。https://stackoverflow.com/questions/3004587/how-to-get-attribute-value-using-selectsinglenode –

関連する問題