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.
感謝を使用して、データ・広告-IDを取得する必要があります!私はこれを試しましたが、 'data-ad-id'ではなく' car name'を取得しました。 @Ganesh Pandhere – heyaa
C#コードがどのように書かれているのか分かりません。しかし私は、私が言及した方法で通常行う属性値を取得するコードを与えました。 –
私はそれがあなたのために働いてくれることを願っています それ以外の場合は、参考になるSelectSingleNodeに関連するものを見つけようとしました。https://stackoverflow.com/questions/3004587/how-to-get-attribute-value-using-selectsinglenode –