Meine Aufgabe ist es, Bilder URLs innerhalb einer HTML-HTML-Parser ignoriert img-Tag (Golang)
Das Problem
HTML-Parser golang.org/x/net/html
sowie zu finden als github.com/PuerkitoBio/goquery
das größte Bild auf der Seite igonores http://www.ozon.ru/context/detail/id/34498204/
Die Frage
- Was ist falsch in meinem Code
- Warum erforderlich
img
Tag mitsrc=""
wird ignoriert? - Gibt es Möglichkeiten, alle Bilder aus HTML mit zu bekommen?
Hinweise:
Wenn ich verwendet parser written in Swift dieses Bild auf der Seite wurde gefunden
//static2.ozone.ru/multimedia/spare_covers/1013531536.jpg
Dieses Bild-Tag gefunden wurde, wenn i regex Suche verwenden.
Dieses Bild-Tag gefunden wurde, wenn i Drittdienst verwenden saveallimages.com
Ich habe versucht, verwenden gokogiri hat aber keinen Erfolg es auf meinem Mac zu kompilieren.
Go get
ist erfolgreich, aberGo build
für immer fest.
Parsed HTML-Seite Quelle
This is the html die resp, _ := http.Get(url)
Ergebnis ist
Code:
package main
import (
"golang.org/x/net/html"
"log"
"net/http"
)
func main() {
url := "http://www.ozon.ru/context/detail/id/34498204/"
if resp, err := http.Get(url); err == nil {
defer resp.Body.Close()
log.Println("Load page complete")
if resp != nil {
log.Println("Page response is NOT nil")
if document, err := html.Parse(resp.Body); err == nil {
var parser func(*html.Node)
parser = func(n *html.Node) {
if n.Type == html.ElementNode && n.Data == "img" {
var imgSrcUrl, imgDataOriginal string
for _, element := range n.Attr {
if element.Key == "src" {
imgSrcUrl = element.Val
}
if element.Key == "data-original" {
imgDataOriginal = element.Val
}
}
log.Println(imgSrcUrl, imgDataOriginal)
}
for c := n.FirstChild; c != nil; c = c.NextSibling {
parser(c)
}
}
parser(document)
} else {
log.Panicln("Parse html error", err)
}
} else {
log.Println("Page response IS nil")
}
}
}
Ich bin nicht 100%, aber ich glaube, Sie reichte auch das Problem auf [https://github.com/golang/go/issues/16318](https://github.com/golang/ go/issues/16318) vor ein paar Minuten. Ich denke, das hängt damit zusammen, da das Bild in einem "noscript" -Tag steht. –
@DonovanSolms danke. Ich verlinkte diesen Beitrag in dem von Ihnen verlinkten Thread. – George
@DonovanSolms Ich habe das Problem eingereicht. Und ja, es ist verwandt :-) –