如何将url列表添加到gocolly队列?
我想抓取一个使用gocolly的url列表如何将url列表添加到gocolly队列?,go,web-scraping,queue,Go,Web Scraping,Queue,我想抓取一个使用gocolly的url列表 func main() { fileName := "output.txt" var result string f, err := os.Create(fileName) if err != nil { panic(err) } defer func() { if err := f.Close(); err != nil { panic(err)
func main() {
fileName := "output.txt"
var result string
f, err := os.Create(fileName)
if err != nil {
panic(err)
}
defer func() {
if err := f.Close(); err != nil {
panic(err)
}
}()
rows := ReadInput()
q := AddUrl(rows)
// Instantiate default collector
c := colly.NewCollector()
c.OnHTML("body", func(e *colly.HTMLElement) {
result = result + e.Text +"\n"
})
c.OnRequest(func(r *colly.Request) {
fmt.Println("visiting", r.URL)
})
// Set error handler
c.OnError(func(r *colly.Response, err error) {
fmt.Println("Request URL:", r.Request.URL, "failed with response:", r, "\nError:", err)
})
q.Run(c)
f.WriteString(result)
log.Printf("Scraping done, Please check file %q for results\n", fileName)
}
func ReadInput() []string{
// Read from file
b, err := ioutil.ReadFile("input.txt") // just pass the file name
if err != nil {
fmt.Print(err)
}
str := string(b) // convert content to a 'string'
// split each row
rows := strings.Split(str,"\n")
return rows
}
但当我尝试将url从字符串片段(url)添加到gocolly队列时,它并没有添加所有url,只是添加了最后一个url
func AddUrl(rows []string) *queue.Queue {
Q, _ := queue.New(
2, // Number of consumer threads
&queue.InMemoryQueueStorage{MaxSize: 10000},
)
for _,url:=range rows{
Q.AddURL(url)
}
return Q
}
如果我添加url Maualy,那么它就可以完美地工作,而不是循环,但是使用循环,它只添加最后一个元素
func AddUrl(rows []string) *queue.Queue {
Q, _ := queue.New(
2, // Number of consumer threads
&queue.InMemoryQueueStorage{MaxSize: 10000},
)
Q.AddURL("http://bakeshopva.com")
Q.AddURL("http://zekescoffeedc.com")
return Q
}
您确定行包含多个不同的值吗?ReadInput做什么?ReadInput只是从txt文件中读取一些url。行将包含一些字符串片段(url)。