Scrape Dynamische Daten von der Website mit C # HTMLAGILITYPACK

c# html-agility-pack web-scraping

Frage

Ich scrapping Daten mit HTMLAGILITY Pack aber die Seite wird nicht ordnungsgemäß geladen.

Ich brauche, dass mein Code warten sollte, bis die Seite vollständig geladen ist.

Es gibt eine Art von Arbeit um Browser in Form zu verwenden, aber ich muss das nicht in Form verwenden.

Hier ist der Link, den ich verwerfen muss.

HtmlWeb web = new HtmlWeb();
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        HtmlAgilityPack.HtmlDocument doc = web.Load(website);
         var goldTypes = doc.DocumentNode.SelectNodes("//h2[@class='gold-box-title']").ToList();
       var goldPrices = doc.DocumentNode.SelectNodes("//span[@class='gold-box-price--sale'").ToList();

          for (int i = 0; i < 2; i++)
             {
               string  goldPrice = goldPrices[i].InnerText;
               string  goldType = goldTypes[i].InnerText;

             }

Akzeptierte Antwort

Sie waren richtig, alle Daten sind in strukturiertem JSON im Attribut ": buyable" der Elemente "buyable-gold" verfügbar.

Ich habe einen Schnelltest gemacht und das sollte was du willst. Dadurch erhalten Sie eine Liste strukturierter Objekte mit den von Ihnen benötigten Daten.

HtmlWeb web = new HtmlWeb();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HtmlAgilityPack.HtmlDocument doc = web.Load("https://www.ezrsgold.com/buy-runescape-gold");

var buyGoldNodes = doc.DocumentNode.SelectNodes("//buyable-gold");

var buyableJsonList = buyGoldNodes.Select(x => HttpUtility.HtmlDecode(x.Attributes[":buyable"].Value)).ToList();

var buyables = buyableJsons.Select(x => JsonConvert.DeserializeObject<Buyable>(x)).ToList();

Dann würde Ihre Buyable-Klasse in etwa so aussehen.

HtmlWeb web = new HtmlWeb();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
HtmlAgilityPack.HtmlDocument doc = web.Load("https://www.ezrsgold.com/buy-runescape-gold");

var buyGoldNodes = doc.DocumentNode.SelectNodes("//buyable-gold");

var buyableJsonList = buyGoldNodes.Select(x => HttpUtility.HtmlDecode(x.Attributes[":buyable"].Value)).ToList();

var buyables = buyableJsons.Select(x => JsonConvert.DeserializeObject<Buyable>(x)).ToList();



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum