extended price search

This commit is contained in:
nquidox 2025-10-13 20:54:12 +03:00
parent 392400bd44
commit 4b53a1d395

View file

@ -235,27 +235,40 @@ func (s *MandarakeParser) findNode(doc *html.Node, params price) *html.Node {
} }
func (s *MandarakeParser) findData(doc *html.Node, params price) []string { func (s *MandarakeParser) findData(doc *html.Node, params price) []string {
if doc != nil { if doc == nil {
var ( return nil
crawler func(*html.Node) }
values []string
)
crawler = func(node *html.Node) { var (
if node.Type == html.ElementNode && node.Data == params.subTag { crawler func(*html.Node)
if strings.Contains(node.FirstChild.Data, params.substring) { values []string
values = append(values, node.FirstChild.Data) getText func(*html.Node) string
} )
}
for child := node.FirstChild; child != nil; child = child.NextSibling { getText = func(n *html.Node) string {
crawler(child) if n.Type == html.TextNode {
return n.Data
}
var result strings.Builder
for c := n.FirstChild; c != nil; c = c.NextSibling {
result.WriteString(getText(c))
}
return result.String()
}
crawler = func(node *html.Node) {
if node.Type == html.ElementNode && node.Data == params.subTag {
text := strings.TrimSpace(getText(node))
if strings.Contains(text, params.substring) {
values = append(values, text)
} }
} }
crawler(doc) for child := node.FirstChild; child != nil; child = child.NextSibling {
crawler(child)
return values }
} }
return nil crawler(doc)
return values
} }
func (s *MandarakeParser) getPrice(rawStr []string) int { func (s *MandarakeParser) getPrice(rawStr []string) int {