Hey Leute,
ich möchte eine Webseite scrapen und parsen und mit den Informationen von dort weiterarbeiten, genauer gesagt diese Seite.
Interessant sind dabei für mich die Waffennamen (<div class="panel-heading item-title">) sowie die Preise (<span class="item-price-display">). Via Browser (Tampermonkey/Greasemonkey/Controlfreak usw.) wäre das ja relativ einfach, da man einfach auf die DOM Elemente und Funktionen zugreifen kann, aber via NodeJS in der Konsole geht das ja leider nicht so einfach.
Ich hab mir dazu schon einige Libraries angesehen und bin auf folgende Optionen gestoßen:
Einzuschätzen was davon die beste Wahl für mich ist (weil am einfachsten zu handhaben und idealerweise auch am schnellsten) überfordert mich leider etwas, da ich nicht viel Erfahrung in der Entwicklung besitze und mich aktuell noch Step für Step rantaste.
Versucht habe ich es bisher mit cheerio und dom-parser, leider ohne Erfolg:
Das Ergebnis sieht dann so aus (es sind zwar 60 Gegenstände, wie es auch sein soll, nur sieht es sehr strange aus):
Eigentlich müsste es ja auch heißen
und davon dann an Stelle [0] usw. die .innerHTML, aber document ist nicht definiert bzw. kein Objekt.
Hat jemand eine Idee was ich da falsch mache?
Mein Versuch mit Cheerio lief auch nicht viel besser... der output ist einfach leer.
Etwas ausführlichere Tutorials finde ich leider nur für Cheerio, da wird aber nicht das gemacht was ich brauche bzw. nur mit deutlich einfacheren Blog-Seiten gearbeitet.
Wäre über Hilfe jeglicher Art bzw. Links zu Tutorials usw. sehr dankbar. Sitze da jetzt seit Stunden dran und drehe mich im Kreis
ich möchte eine Webseite scrapen und parsen und mit den Informationen von dort weiterarbeiten, genauer gesagt diese Seite.
Interessant sind dabei für mich die Waffennamen (<div class="panel-heading item-title">) sowie die Preise (<span class="item-price-display">). Via Browser (Tampermonkey/Greasemonkey/Controlfreak usw.) wäre das ja relativ einfach, da man einfach auf die DOM Elemente und Funktionen zugreifen kann, aber via NodeJS in der Konsole geht das ja leider nicht so einfach.
Ich hab mir dazu schon einige Libraries angesehen und bin auf folgende Optionen gestoßen:
Einzuschätzen was davon die beste Wahl für mich ist (weil am einfachsten zu handhaben und idealerweise auch am schnellsten) überfordert mich leider etwas, da ich nicht viel Erfahrung in der Entwicklung besitze und mich aktuell noch Step für Step rantaste.
Versucht habe ich es bisher mit cheerio und dom-parser, leider ohne Erfolg:
Code:
var request = require('request');
var DomParser = require('dom-parser');
var parser = new DomParser();
function search() {
var bench = new Date().getTime();
request({
url: "https://bitskins.com/?appid=730&is_stattrak=0&has_stickers=0&is_souvenir=0&show_trade_delayed_items=1&sort_by=created_at&order=asc",
method: "GET",
json: false,
}, function (error, response, data) {
if (typeof data === "undefined") {
console.log("Error, no HTML page received");
}
else {
console.log("Received HTML page. Processed data in " + ((new Date().getTime() - bench) / 1000 + " seconds."));
var html = parser.parseFromString(data);
const name = html.getElementsByClassName("panel-heading item-title");
console.log(name);
}
});
}
search();
Das Ergebnis sieht dann so aus (es sind zwar 60 Gegenstände, wie es auch sein soll, nur sieht es sehr strange aus):
Eigentlich müsste es ja auch heißen
Code:
"html.document.getElementsByClassName("panel-heading item-title")
Hat jemand eine Idee was ich da falsch mache?
Code:
const request = require('request');
const cheerio = require('cheerio')
function search() {
var bench = new Date().getTime();
request({
url: "https://bitskins.com/?appid=730&is_stattrak=0&has_stickers=0&is_souvenir=0&show_trade_delayed_items=1&sort_by=created_at&order=asc",
method: "GET",
json: false,
}, function (error, response, html) {
if (error || typeof html === "undefined") {
console.log("Error, no HTML page received");
}
else {
console.log("Received HTML page. Processed data in " + ((new Date().getTime() - bench) / 1000 + " seconds."));
const $ = cheerio.load(html);
var name = $('.panel-heading item-title');
var output = name.text();
console.log(output);
}
});
}
search();
Mein Versuch mit Cheerio lief auch nicht viel besser... der output ist einfach leer.
Etwas ausführlichere Tutorials finde ich leider nur für Cheerio, da wird aber nicht das gemacht was ich brauche bzw. nur mit deutlich einfacheren Blog-Seiten gearbeitet.
Wäre über Hilfe jeglicher Art bzw. Links zu Tutorials usw. sehr dankbar. Sitze da jetzt seit Stunden dran und drehe mich im Kreis
Zuletzt bearbeitet: