Ich möchte Web-Scraping lernen. Deshalb fing ich an zu üben. Ich versuche, Daten-Ad-ID von HTML
mit XPath
zu bekommen.Erhalten Attribut des Elements in XPath
HTML
Struktur wie folgt aus:
<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 für <a class="link--muted no--text--decoration result item" >
ist //*[@id="z1234"]/div[3]/div[4]/div[2]/div[1]/div[11]/a
. Wenn ich ein anderes Auto wähle, ändert sich nur das letzte div.
Nach diesem schreibe ich C#
Code:
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);
}
}
Ich kann nichts von diesem Knoten erhalten. Es ist null. Wie kann ich eine Daten-Ad-ID erhalten?
EDIT ich meinen C# -Code ändern:
var rows = document.DocumentNode.SelectNodes("//a[@data-ad-id]")[0];
var id = rows.Attributes["data-ad-id"].Value;
Jetzt kann ich data-ad-id.
Dank für die schnelle Antwort holen! Ich habe das versucht, aber ich bekomme 'Auto-Name' anstelle von' Daten-Ad-ID'. @Ganesh Pandhere – heyaa
Ich bin mir nicht sicher, wie der C# -Code geschrieben wird. Aber ich habe den Code gegeben, um den Wert des Attributs zu holen, was wir normalerweise auf die Weise tun, die ich erwähnte. –
Ich hoffe, es hat für Sie funktioniert @ heyaa Sonst habe ich versucht, etwas im Zusammenhang mit SelectSingleNode als Referenz zu finden https://StackOverflow.com/Questions/3004587/How-to-get-Attribute-value-using-selectsinglenode –