我正在试着刮网页https://www.brasiltronic.com.br/pesquisa?pg=1&t=Fone%20de%20ouvido
使用以下代码:
scraper.go
package scraper
import (
"fmt"
"strings"
"github.com/gocolly/colly"
"github.com/gocolly/colly/extensions"
)
type Product struct {
name string
fullPrice string
url string
}
func Scraper(url string) []Product {
products := make([]Product, 0)
c := colly.NewCollector()
colly.AllowedDomains("www.brasiltronic.com.br")
c.OnHTML("ul.row", func(e *colly.HTMLElement) {
name := e.ChildText("div > div.information > h3.name.no-medium.no-tablet")
fullPrice := e.ChildText("strong.sale-price > span:nth-child(1)")
replacer := strings.NewReplacer("R$", "", ",", ".")
fullPrice = replacer.Replace(fullPrice)
url := e.ChildAttr("div > div.information > a", "href")
products = append(products, Product{name: name, fullPrice: fullPrice, url: url})
})
c.OnError(func(r *colly.Response, err error) {
fmt.Println("Request URL:", r.Request.URL, "failed with response:", r.Request, "\nError:", err)
})
// Uses a random User-Agent in each request
extensions.RandomUserAgent(c)
c.Visit(url)
return products
}
main.go
package main
import (
"fmt"
"github.com/Antonio-Costa00/Go-Price-Monitor/scraper"
)
func main() {
url := "https://www.brasiltronic.com.br/pesquisa?pg=1&t=Fone%20e%20ouvido"
products := scraper.Scraper(url)
fmt.Println(products)
}
输出如下:
[{Fone de Ouvido Profissional AKG K92 com fio - Preto e DouradoMicrofone de lapela JBL com fone de ouvido CSLM
20Fone de Ouvido Samson SR350 Over-ear Estéreo PretoFone de Ouvido Sennheiser CX100 BrancoFone de Ouvido Audio
-Technica ATH-M20xBT sem Fio com Bluetooth PretoFone de Ouvido Sennheiser HD100 com fio (Preto)Fone de Ouvido
Sennheiser HD400S com fio (Preto)Fone de Ouvido Audio-Technica ATH-M40x Profissional para Monitoração com fio
- PretoFone de Ouvido Audio-Technica ATH-M20x Profissional para Monitoração com fio - PretoFone de Ouvido Audi
o-Technica ATH-M30x Profissional para Monitoração com fio - PretoFone de Ouvido Audio-Technica ATH-AVC400 extr
a-auricualres SonicPro com fio - PretoFone de Ouvido Audio-Technica ATH-M50x Profissional para Monitoração com
fio - PretoToca Discos Audio-Technica AT-LP60XHP-GM Automático Belt-Drive com Fone de Ouvido ATH-250AV ...Fon
e de Ouvido Sem Fio Sennheiser RS2000 - PretoFone de Ouvido Profissional AKG K361-BT Dobrável - PretoKit Micro
fone Samson C01U Pro PodCasting Pack SAC01UPROPKFone De Ouvido Profissional AKG K371-BT com Bluetooth - PretoH
eadset Audio-Technica ATH-101USB Single-Ear com fio USB - PretoFone de Ouvido Audio-Technica ATH-R70x Profissi
onal de referência abertos com fio - PretoKit Microfone Estudio Zoom ZUM-2 PMP com Headphone e tripé de mesaHe
adset Audio-Technica ATH-102USB Dual-Ear com fio USB - PretoFones de ouvido de monitoramento Sennheiser IE 40
PRO Clear intra-auricularHeadset Gamer Audio-Technica ATH-G1WL Premium para Jogos Wireless - PretoMicrofone Sa
mson Q9U Cardióide XLR/USB 359.10 94.50 159.30 159.30 699.30 269.10 519.30 879.30 419.40 619.20 373.50 1.219.
50 1.399.50 1.479.60 769.50 1.599.30 1.009.80 219.60 2.559.60 1.129.50 224.10 759.60 1.649.70 1.619.10 /fone-d
e-ouvido-profissional-akg-k92-com-fio-preto-e-dourado-p1331225}]
我想得到一个字符串的切片,但实际上,我得到的是一个包含所有元素的元素切片。
有人能帮我确定发生了什么吗?提前感谢。
1条答案
按热度按时间brvekthn1#
我找到了答案。我只是添加了colly的foreach方法
输出量: