suchen
HeimBackend-EntwicklungGolangchromedp click funktioniert in meinem Golang-Code nicht. Können Sie das Problem identifizieren?

chromedp click 在我的 golang 代码中不起作用。你能找出问题所在吗?

PHP-Editor Erdbeere, hallo! Was das von Ihnen erwähnte Problem betrifft: Wenn chromedp click in Ihrem Golang-Code nicht funktioniert, kann ich Ihnen helfen, das Problem herauszufinden. chromedp ist eine Bibliothek, die das Chrome DevTools-Protokoll zur Automatisierung verwendet. Die Click-Methode wird zum Simulieren von Mausklickereignissen verwendet. Zu den möglichen Problemen gehören: 1. Das Seitenelement ist unsichtbar oder wird durch andere Elemente blockiert. 2. Die Parameter der Click-Methode werden falsch übergeben. 3. Die Version von chromedp ist nicht mit der Chrome-Browserversion kompatibel . Andere Probleme mit der Codelogik. Bitte geben Sie weitere Details an und ich werde so schnell wie möglich eine Lösung anbieten.

Frageninhalt

Ich verwende chromedp, um Scraper zu entwickeln.

Um den gewünschten Inhalt (Seiten-HTML) zu erhalten, muss ich auf eine bestimmte Schaltfläche klicken.

Also habe ich chromedp.click und chromedp.outerhtml verwendet, aber ich habe nur den HTML-Code der Seite vor dem Klick erhalten, nicht den HTML-Code der Seite, nachdem der Klick abgeschlossen war.

Können Sie meinen Code sehen und mir vorschlagen, wie ich ihn beheben kann?

func runCrawler(URL string, lineNum string, stationNm string) {
    
        // settings for crawling
    opts := append(chromedp.DefaultExecAllocatorOptions[:],
        chromedp.Flag("headless", false))
    
        // create chrome instance
    contextVar, cancelFunc := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancelFunc()

    contextVar, cancelFunc = chromedp.NewContext(contextVar)
    defer cancelFunc()


    var htmlContent string

    err := chromedp.Run(contextVar,
        chromedp.Navigate(URL),
        chromedp.WaitVisible(".end_footer_area"),
        chromedp.Click(".end_section.station_info_section > div.at_end.sofzqce > div > div.c10jv2ep.wrap_btn_schedule.schedule_time > button"),
        chromedp.OuterHTML("html", &htmlContent, chromedp.ByQuery),
    )
    fmt.Println("html", htmlContent)
    checkErr(err)

Ich gebe dir die Homepage und die Schaltflächen zurück, die ich anklicken muss

Seiten-URL: https://pts.map.naver.com/end-subway/ends/web/11321/home

Der Schaltflächenbereich, auf den ich klicken muss:

Vielen Dank

Workaround

Die gewünschte Seite wird in einem neuen Tab (Ziel) geöffnet.

In diesem Fall können wir chromedp.waitnewtarget verwenden, um einen Kanal zu erstellen, von dem wir die Ziel-ID des neuen Tabs erhalten können. Erstellen Sie dann mit der Option chromedp.withtargetid einen neuen Kontext, damit wir eine Verbindung zum neuen Tab herstellen können. Von nun an ist Ihnen alles vertraut.

package main

import (
    "context"
    "fmt"
    "strings"

    "github.com/chromedp/cdproto/target"
    "github.com/chromedp/chromedp"
)

func main() {
    opts := append(chromedp.DefaultExecAllocatorOptions[:],
        chromedp.Flag("headless", false),
    )

    ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()

    ctx, cancel = chromedp.NewContext(ctx)
    defer cancel()

    var htmlContent string

    ch := chromedp.WaitNewTarget(ctx, func(i *target.Info) bool {
        return strings.Contains(i.URL, "/timetable/web/")
    })

    err := chromedp.Run(ctx,
        chromedp.Navigate("https://pts.map.naver.com/end-subway/ends/web/11321/home"),
        chromedp.WaitVisible(".end_footer_area"),
        chromedp.Click(".end_section.station_info_section > div.at_end.sofzqce > div > div.c10jv2ep.wrap_btn_schedule.schedule_time > button"),
    )
    if err != nil {
        panic(err)
    }

    newCtx, cancel := chromedp.NewContext(ctx, chromedp.WithTargetID(<-ch))
    defer cancel()

    if err := chromedp.Run(newCtx,
        chromedp.WaitReady(".table_schedule", chromedp.ByQuery),
        chromedp.OuterHTML("html", &htmlContent, chromedp.ByQuery),
    ); err != nil {
        panic(err)
    }
    fmt.Println("html", htmlContent)
}

Das obige ist der detaillierte Inhalt vonchromedp click funktioniert in meinem Golang-Code nicht. Können Sie das Problem identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:stackoverflow. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Golang vs. Python: Parallelität und MultithreadingGolang vs. Python: Parallelität und MultithreadingApr 17, 2025 am 12:20 AM

Golang eignet sich besser für hohe Parallelitätsaufgaben, während Python mehr Vorteile bei der Flexibilität hat. 1. Golang behandelt die Parallelität effizient über Goroutine und Kanal. 2. Python stützt sich auf Threading und Asyncio, das von GIL betroffen ist, jedoch mehrere Parallelitätsmethoden liefert. Die Wahl sollte auf bestimmten Bedürfnissen beruhen.

Golang und C: Die Kompromisse bei der LeistungGolang und C: Die Kompromisse bei der LeistungApr 17, 2025 am 12:18 AM

Die Leistungsunterschiede zwischen Golang und C spiegeln sich hauptsächlich in der Speicherverwaltung, der Kompilierungsoptimierung und der Laufzeiteffizienz wider. 1) Golangs Müllsammlung Mechanismus ist praktisch, kann jedoch die Leistung beeinflussen.

Golang vs. Python: Anwendungen und AnwendungsfälleGolang vs. Python: Anwendungen und AnwendungsfälleApr 17, 2025 am 12:17 AM

Wählen SieGolangforHighperformanceConcurcurrency, idealforbackendServicesandNetworkProgramming; selectPythonforrapidDevelopment, DataScience und MachinelearningDuEToSverseStilityAntenSiveselibrary.

Golang gegen Python: Schlüsselunterschiede und ÄhnlichkeitenGolang gegen Python: Schlüsselunterschiede und ÄhnlichkeitenApr 17, 2025 am 12:15 AM

Golang und Python haben jeweils ihre eigenen Vorteile: Golang ist für hohe Leistung und gleichzeitige Programmierung geeignet, während Python für Datenwissenschaft und Webentwicklung geeignet ist. Golang ist bekannt für sein Parallelitätsmodell und seine effiziente Leistung, während Python für sein Ökosystem für die kurze Syntax und sein reiches Bibliothek bekannt ist.

Golang vs. Python: Benutzerfreundlichkeit und LernkurveGolang vs. Python: Benutzerfreundlichkeit und LernkurveApr 17, 2025 am 12:12 AM

In welchen Aspekten sind Golang und Python einfacher zu verwenden und haben eine glattere Lernkurve? Golang eignet sich besser für hohe Parallelitäts- und hohe Leistungsbedürfnisse, und die Lernkurve ist für Entwickler mit C -Sprachhintergrund relativ sanft. Python eignet sich besser für Datenwissenschaft und schnelles Prototyping, und die Lernkurve ist für Anfänger sehr reibungslos.

Das Performance -Rennen: Golang gegen C.Das Performance -Rennen: Golang gegen C.Apr 16, 2025 am 12:07 AM

Golang und C haben jeweils ihre eigenen Vorteile bei Leistungswettbewerben: 1) Golang ist für eine hohe Parallelität und schnelle Entwicklung geeignet, und 2) C bietet eine höhere Leistung und eine feinkörnige Kontrolle. Die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack basieren.

Golang vs. C: Code Beispiele und LeistungsanalyseGolang vs. C: Code Beispiele und LeistungsanalyseApr 15, 2025 am 12:03 AM

Golang eignet sich für eine schnelle Entwicklung und gleichzeitige Programmierung, während C für Projekte, die eine extreme Leistung und die zugrunde liegende Kontrolle erfordern, besser geeignet sind. 1) Golangs Parallelitätsmodell vereinfacht die Parallelitätsprogrammierung durch Goroutine und Kanal. 2) Die Vorlagenprogrammierung von C bietet generische Code und Leistungsoptimierung. 3) Golangs Müllsammlung ist bequem, kann jedoch die Leistung beeinflussen. Die Speicherverwaltung von C ist komplex, aber die Kontrolle ist in Ordnung.

Golangs Auswirkungen: Geschwindigkeit, Effizienz und EinfachheitGolangs Auswirkungen: Geschwindigkeit, Effizienz und EinfachheitApr 14, 2025 am 12:11 AM

GoimpactsDevelopmentPositivyThroughSpeed, Effizienz und DiasMlitication.1) Geschwindigkeit: Gocompilesquickandrunseffiction, idealforlargeProjects

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)