C# Webseite (Bsp. Github) wird unvollständig gelesen. Warum ?

Micke

Lt. Junior Grade
Registriert
Nov. 2020
Beiträge
391
Hallo Forum,
ich möchte den Inhalt einer Webseite einlesen. Leider erhalte ich dabei nicht alle Elemente die im Browser zu sehen sind, sondern nur einen string der dem "Seitenquelltext anzeigen" entspricht.

Die Abfrage erfolgt damit:
Code:
HttpClient client = new();
string uri = "https://github.com/notepad-plus-plus/notepad-plus-plus/releases/latest"
var content = await client.GetStringAsync(uri).ConfigureAwait(false);

Dabei fehlt der "Assets" Block mit den Downloads der Github Seite. Sprich dieser Block landet nicht in content.
Wie muss der Aufruf hierfür angepasst werden ?

Das besondere an "Assets" ist, daß die Links der Downloads von der Webseite nachgeladen werden.
Allerdings sollte client.GetStringAsync(uri) m.M.n. erst dann mit einem string zurückkehren, wenn die Seite vollständig aufgebaut wurde. Falsche Erwartung ?

Danke schonmal

PS: Das "Warum" in der Frage fragt warum der Code nicht das erwartete liefert. Nicht ob Webseiten dynamische Bestandteile haben können.
 
Zuletzt bearbeitet:
Das wird vermutlich auf der Client-Seite in JS geladen, und dann steht das halt einfach nicht im HTML Quelltext. Ich würde hier einfach direkt die Github API verwenden, die ist für sowas gedacht und das ist dann auch viel einfacher als das zu scrapen.
 
  • Gefällt mir
Reaktionen: Kalsarikännit
Die wenigsten Seiten stehen noch als "Echter" Quelltext im Web. Das sind idr. nur noch Scripte welche die Seite "Live" aufbauen und dabei unter anderem deine Cookis etc. beachten.

Das man dort niemals einen vollständigen "Quelltext" erhält, dürfte selbstverständlich sein .... erst recht wenn man diesen versucht zu laden ohne es überhaupt auf zu rufen.
 
  • Gefällt mir
Reaktionen: Kalsarikännit, pseudopseudonym und madmax2010
Kannst mal mit curl https://github.com/ (warum unterstüzt CB eigentlich kein Markdown...) testen, ob's an dir liegt, oder ob nicht mehr statischer Content kommt.
Für das, was die anderen hier schon angesprochen haben, kannst du dir z. B. Selenium mal angucken.
 
  • Gefällt mir
Reaktionen: Micke
Ja, wenn es um Javascript geht, das nicht geladen wird, dann schafft Selenium Abhilfe.

Und auch noch bei anderen, störenden Kleinigkeiten.
 
  • Gefällt mir
Reaktionen: blablub1212 und madmax2010
Danke danke, aber automat. Testen ist hierbei nicht die Intension. Ich brauche tatsächlich den string zum weiterverarbeiten.
pseudopseudonym schrieb:
Kannst mal mit curl https://github.com/ testen, ob's an dir liegt, oder ob nicht mehr statischer Content kommt.
danke für den Hinweis - ausprobiert, curl liefert den fehlenden Block ebenfalls nicht.
 
Selenium kann also mehr als Tests, interessant, und damit gelöst.... danke für die Tips.
Es tut, aber elegant ist m.M.n. anders ... da ist die letzte Zeile noch nicht getippert :)
 
Zuletzt bearbeitet:
joshim schrieb:
Scraper landen bei mir schneller im Block/Challenge als sie requesten können.
Wie erkennst du die denn wenn User-Agent, HTTP Header inkl. Cookies passen? Dann ginge es nur ums Abfragemuster und das wird dann einfach randomized delayed und auf gängige Bürozeiten eingeschränkt. Wie lang so ein Scrape dauert ist meistens unerheblich solang mans nicht von Hand machen muss.
 
Zurück
Oben