Scraping von Seiten funktioniert nicht?


23.09.2024, 21:22

javascript:(function()%7Bvar%20song=document.querySelector('p%5Bdata-currently-playing-channelkey=%22live%22%5D%20strong').innerText+%22%20%22+document.querySelector('p%5Bdata-currently-playing-channelkey=%22live%22%5D%20span%5Bdata-artist%5D').innerText;alert(song);%7D)();%0A die Prozentzeichen nicht weg weil Safari ist automatisch so formatiert

4 Antworten

Keine Ahnung was Du da treibst.

Du hast nicht beschrieben auf welche Art Du den Inhalt der Zielwebseite (Radiosender) aquirierst? Innerhalb einer eigenen Webseite käme ohne spezielle Frameworks nur ein XMLHttpRequest in Frage. Allerdings "wehren" sich die meisten Webseiten gegen derartige "Übergriffe".

Webscraping erledigt man nicht per JavaScript innerhalb eines Browsers, sondern im Backend in PHP oder anderen Geeigneten Sprachen.

einen universellen Scraper gibt es nicht!

WebScraper sind auf die jeweilige Zielseite individuell zugeschnitten. Also "bei allen Radiosendern' geht schon mal garnicht.

Javascriptbasierte , dynamische Webseiten zu scrapen ist eine besondere Herausforderung da einfache Webrequests lediglich den Code der Seite abrufen und diesen nicht ausführen.

die Prozentzeichen nicht weg weil Safari ist automatisch so formatiert

das ist ja totaler Schwachsinn... Ich weiß nicht wo und wie Du das JavaScript-Snippet aufgefischt hast. Aber es ist warum auch immer URL-encoded und so garantiert nicht ausführbar.

Decodieren ist ganz einfach🥱: ich habe den Abschnitt mal durch meine "Allzweckwaffe" (Powershell) gejagt.

$UrlEncoded=@'
(function()%7Bvar%20song=document.querySelector('p%5Bdata-currently-playing-channelkey=%22live%22%5D%20strong').innerText+%22%20%22+document.querySelector('p%5Bdata-currently-playing-channelkey=%22live%22%5D%20span%5Bdata-artist%5D').innerText;alert(song);%7D)();%0A
'@
[System.Net.WebUtility]::UrlDecode($UrlEncoded)

Ergebnis:

function(){var song=document.querySelector('p[data-currently-playing-channelkey="live"] strong').innerText " " document.querySelector('p[data-currently-playing-channelkey="live"] span[data-artist]').innerText;alert(song);})();

..was Du mit einem solchen Snippet anfangen willst erschließt sich mir nicht...

Vielleicht wird der HTML Code mittels JavaScript nach dem Laden der Seite ergänzt. In dem Fall wird der Songtitel möglicherweise per JSON übermittelt.

Hallo.

Wenn du den Code geschrieben hast, solltest du doch feststellen können, woran es liegt, oder?

Denkbar wäre, dass die Seite wo du es ausprobierst ein neues Layout hat, oder sie von Text auf Grafiken gewechselt haben.

Aber ohne deinen Code noch die Seite zu kennen, kann dir hier keiner helfen.

LG

Woher ich das weiß:Studium / Ausbildung – Diplom Wirtschaftsinformatiker

RigglerLP550 
Beitragsersteller
 23.09.2024, 21:26

Ich hab’s bei der Seite von Antenne Bayern ausprobiert und bei der von Energy aber da bestand die Seite hauptsächlich aus Funktionen und nicht HTML Tags deswegen konnte man das nicht ermitteln

ohne code kann niemand sagen wo der fehler liegen könnte, aber das einfache webscrapen ist jetzt nicht sonderlich schwer