https://www.forschung-und-lehre.de/recht/grenzen-des-web-scrapings-2421/
Etwas Lesestoff zur rechtlichen Seite des Vorhabens.
Vielen dank, wir haben mit unsere Rechtsberatung schon kontakt aufgenommen, für unser vorhaben ist es erlaubt.
https://www.forschung-und-lehre.de/recht/grenzen-des-web-scrapings-2421/
Etwas Lesestoff zur rechtlichen Seite des Vorhabens.
wie schreib ich das den wenn es im content-Attribut drin ist ?
.content
?.content
?
Also, Crashkurs HTML/CSS/JavaScript, sonst werden wir da nie fertig.leider lässt sich der text nicht kopieren, hab jetzt alles varianten aus probiert.
document
angesprochen wird.<a href="#">Test</a>
der Inhalt, der sich zwischen dem öffnenden <a>
und dem schließenden </a>
(hier also der Text "Test") befindet, als Link zur URI "#" markiert. Im DOM würde das auf ein entsprechendes Objekt abgebildet werden.dd[data-product-price]
HTML-Elemente des Typs dd gewählt, die über das Attribut data-product-price verfügen. Man kann auch nach konkreten Inhalten bei Attributen selektieren, dazu schreibt man in den eckigen Klammern eben einen Vergleich, so würden mit dd[data-product-title='price']
nur dd-Elemente angesprochen, deren data-prduct-title-Attribut den Wert "price" besitzen.<div class="title">
, so kann dieses mit div.title
selektiert werden. Dieser Selektor besteht nun aus einem Typselektor (div
) und einem Klassenselektor (.title
). Willst Du dagegen alle Elemente (unabhängig vom Typ) mit dieser Klasse haben, lässt Du den Typselektor einfach weg und gibst .title
an.function productObject(e) {
const result = {};
result.title = e.querySelector('h2').innerText.trim()
result.price = e.querySelector('dd[data-product-price]').innerText
result.url = e.querySelector('a').href
return result;
}
e
angesprochen wird. Durch e.querySelector
wird also gerade der Teilbaum des Dokuments durchsucht, dessen Wurzel das Element e
ist.e.querySelector("h2")
liefert somit das erste h2-Element in dem von e
definierten Teilbaum des Dokuments. HTML-Elemente haben Attribute, auf die in JavaScript zugegriffen werden kann. Eines dieser Attribute ist innerText, mit dem der Text (ohne das HTML-Markup) ausgelesen werden kann. So würde document.body.innerText
den gesamten Text des Dokumentinhalts liefern - aber eben ohne HTML. Im Gegensatz dazu liefert innerHTML den Text inkl. Markup. Probiers einfach mal in der Konsole aus. e.querySelector("h2").innerText
liefert also den Text, der zwischen dem öffnenden und dem schließenden h2-Tag steht (das sich wiederum in dem von e definierten Teilbaum befinden muss). Da es sich um Text handelt, können mit trim() überflüssige Leerzeichen abgeschnitten werden.e.querySelector("strong.pricefield__price").getAttribute("content")
Ich weiß auch nicht, wo das Problem liegt. Das war jetzt eine Kurzversion speziell für sein Vorhaben, aber generell wäre es zu empfehlen, sich mal tiefer mit der Materie zu befassen. So schwer ist das nun auch nicht.Ja, schon schlimm, dass sich so Einführungen im Netz nicht finden![]()
Titel | Forum | Antworten | Datum | |
---|---|---|---|---|
N | Web Scraping von URL | Java Basics - Anfänger-Themen | 3 |