For循环里调用函数不成功

bvaccc · 2016-12-22 06:47:46 · 3627 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2016-12-22 06:47:46 的主题,其中的信息可能已经有所发展或是发生改变。

贴出代码:

package main

import (
    "fmt"
    "strconv"

    "github.com/PuerkitoBio/goquery"
)

func PrintProxy(url string) {
    g, e := goquery.NewDocument(url)
    if e != nil {
        fmt.Println(e)
    }
    g.Find("tr").Each(func(i int, s *goquery.Selection) {
        if i > 0 {
            node := s.Find("td")
            IP := node.Eq(0)
            Port := node.Eq(1)
            fmt.Printf("%v:%v\n", IP.Text(), Port.Text())
        }

    })
}

func main() {
    url := "http://www.kuaidaili.com/free/inha/"
    for i := 1; i < 5; i++ {
        u := url + strconv.Itoa(i)
        fmt.Println(u)
        PrintProxy(u)
        fmt.Println("++++++")
    }
}

打印:

http://www.kuaidaili.com/free/inha/1
112.111.217.74:808
117.90.2.140:9000
++++++
http://www.kuaidaili.com/free/inha/2
++++++
http://www.kuaidaili.com/free/inha/3
++++++
http://www.kuaidaili.com/free/inha/4
++++++

为何只调用了一次函数?


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3627 次点击  
加入收藏 微博
3 回复  |  直到 2016-12-22 09:33:17
gwll
gwll · #1 · 8年之前

应该是有异步线程,没等返回主线程 函数退出了,在func PrintProxy里最后一行加time.Sleep(time.Second * 1)试试

jmzwcn
jmzwcn · #2 · 8年之前

package main

import ( "fmt" "strconv" "sync"

"github.com/PuerkitoBio/goquery"

)

var wg sync.WaitGroup

func PrintProxy(url string) { g, e := goquery.NewDocument(url) if e != nil { fmt.Println(e) } g.Find("tr").Each(func(i int, s *goquery.Selection) { if i > 0 { node := s.Find("td") IP := node.Eq(0) Port := node.Eq(1) fmt.Printf("%v:%v\n", IP.Text(), Port.Text()) }

})
wg.Done()

}

func main() { url := "http://www.kuaidaili.com/free/inha/&#34; for i := 1; i < 5; i++ { u := url + strconv.Itoa(i) fmt.Println(u) wg.Add(1) PrintProxy(u) fmt.Println("++++++") } wg.Wait() }

bvaccc
bvaccc · #3 · 8年之前

#1 楼 @gwll 哈哈,搞了半天 发现是网站的限制,多次请求速度太快。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传