Der_Picknicker
Lt. Commander
- Registriert
- Nov. 2020
- Beiträge
- 1.583
Hallo zusammen,
ich habe bereits einige Programmiererfahrungen in C vor allem im Embedded Bereich. Nun möchte ich aber neues Lernen und damit auch eine neue Sprache. GO / GOLANG. Ich habe mir für das Vorhaben des Lernens die Aufgabe überlegt, dass ich gerne einen Preistracker bauen möchte. Dieser soll lediglich auf einer Website funktionieren.
Ich habe bereits verschiedene Anleitungen durchgearbeitet. Zunächst mit der Bibliothek Colly => http://go-colly.org/
Dies funktioniert jedoch nicht, da der Code dann verschiedene Preise zurückgibt, da dies wahrscheinlich seitens der Online-Shops erkannt wurde, dass da kein echter Mensch vor sitzt
Dieser Code ist von mir getestet und funktioniert, wie von der Anleitung geschrieben:
Ich brauche jetzt jedoch eure Hilfe, weil ich nicht weiß, wie ich den Code auf die Seite von Home24 anpassen kann. Hier mal eine beispielhaftes Produkt, welches ich gerne überwachen würde:
https://www.home24.de/produkt/pendelleuchte-blacky-iii-rauchglas-eisen-8-flammig
Mit dem CSS-Inspector / Selector habe ich bereits folgende Informationen herausgefunden:
Dort steht der aktuelle Preis harncodiert drinnen, dies wird jedoch erst bei aufrufen der Seite sichtbar. Bei Colly werden dort bestimmt 20 verschiedene Preise angezeigt. Wie bekomme ich nun ChromeDP dazu, dies so zu machen, wie ich es mir vorstelle?
Danke fürs lesen und eure Zeit.
ich habe bereits einige Programmiererfahrungen in C vor allem im Embedded Bereich. Nun möchte ich aber neues Lernen und damit auch eine neue Sprache. GO / GOLANG. Ich habe mir für das Vorhaben des Lernens die Aufgabe überlegt, dass ich gerne einen Preistracker bauen möchte. Dieser soll lediglich auf einer Website funktionieren.
Ich habe bereits verschiedene Anleitungen durchgearbeitet. Zunächst mit der Bibliothek Colly => http://go-colly.org/
Dies funktioniert jedoch nicht, da der Code dann verschiedene Preise zurückgibt, da dies wahrscheinlich seitens der Online-Shops erkannt wurde, dass da kein echter Mensch vor sitzt
Dieser Code ist von mir getestet und funktioniert, wie von der Anleitung geschrieben:
Go:
package main
import (
"context"
"fmt"
"github.com/chromedp/cdproto/cdp"
"github.com/chromedp/chromedp"
"log"
)
// Product data structure to store the scraped data
type Product struct {
name, price string
}
func main() {
// to keep track of all the scraped objects
var products []Product
// initialize a controllable Chrome instance
ctx, cancel := chromedp.NewContext(
context.Background(),
)
// to release the browser resources when
// it is no longer needed
defer cancel()
// browser automation logic
var productNodes []*cdp.Node
err := chromedp.Run(ctx,
chromedp.Navigate("https://scrapingclub.com/exercise/list_infinite_scroll/"),
chromedp.Nodes(".post", &productNodes, chromedp.ByQueryAll),
)
if err != nil {
log.Fatal("Error:", err)
}
// scraping logic
var name, price string
for _, node := range productNodes {
// extract data from the product HTML node
err = chromedp.Run(ctx,
chromedp.Text("h4", &name, chromedp.ByQuery, chromedp.FromNode(node)),
chromedp.Text("h5", &price, chromedp.ByQuery, chromedp.FromNode(node)),
)
if err != nil {
log.Fatal("Error:", err)
}
// initialize a new product instance
// with scraped data
product := Product{}
product.name = name
product.price = price
products = append(products, product)
}
fmt.Println(products)
}
Ich brauche jetzt jedoch eure Hilfe, weil ich nicht weiß, wie ich den Code auf die Seite von Home24 anpassen kann. Hier mal eine beispielhaftes Produkt, welches ich gerne überwachen würde:
https://www.home24.de/produkt/pendelleuchte-blacky-iii-rauchglas-eisen-8-flammig
Mit dem CSS-Inspector / Selector habe ich bereits folgende Informationen herausgefunden:
CSS:
<span data-testid="current-price" display="inline-block" font-size="fs_20,fs_24,fs_28,fs_32" font-weight="bold" class="css-f97reh">319,99 €</span>
Dort steht der aktuelle Preis harncodiert drinnen, dies wird jedoch erst bei aufrufen der Seite sichtbar. Bei Colly werden dort bestimmt 20 verschiedene Preise angezeigt. Wie bekomme ich nun ChromeDP dazu, dies so zu machen, wie ich es mir vorstelle?
Danke fürs lesen und eure Zeit.