使用顺序和并发2种方式 正则表达式
并发就是快
package main
import "io/ioutil"
import "net/http"
import "fmt"
import "regexp"
import "time"
func testget(url string) string{
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
return get_title(string(body))
}
func testget2(url string, chann chan string ){
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
chann <- get_title(string(body))
}
func get_title(body string) string{
re := regexp.MustCompile("<title>(.*)</title>")
a := re.FindStringSubmatch(body)
if len(a) != 0{
return a[1]
}
return ""
}
func current_unixtimestamp() int32{
return int32(time.Now().Unix())
}
func main(){
urllist := [] string {"http://www.baidu.com","http://www.17173.com","http://www.hao123.com","http://www.126.com","http://www.oschina.net","http://www.simapple.com"}
single_start := current_unixtimestamp()
for _,v := range urllist {
fmt.Println(v)
baidubody := testget(v)
fmt.Println(baidubody)
}
single_end := current_unixtimestamp()
fmt.Printf("use %d seconds\n***********************************\n", single_end-single_start)
chann := make(chan string, 300)
single_start = current_unixtimestamp()
for _,v := range urllist {
fmt.Println(v)
go testget2(v, chann)
go fmt.Println(<-chann)
}
single_end = current_unixtimestamp()
fmt.Printf("use %d seconds", single_end-single_start)
}