func main() { flag.Parse() fmt.Println("==== 测试并行调用 statuses/user_timeline ====") // 记录初始时间 t0 := time.Now() // 抓微博 statuses, err := contrib.GetStatuses(&weibo, *access_token, "人民日报", // 微博用户名 0, // 微博用户ID,仅当用户名为空字符串时使用 211) // 抓取微博数 if err != nil { fmt.Println(err) return } fmt.Printf("抓取的总微博数 %d\n", len(statuses)) // 记录终止时间 t1 := time.Now() fmt.Printf("并行抓取花费时间 %v\n", t1.Sub(t0)) // 打印最后五条微博内容 for i, status := range statuses { if i == 5 { break } fmt.Println(status.Text) } }
func main() { flag.Parse() // 读取用户名 content, err := ioutil.ReadFile(*users_file) if err != nil { log.Fatal("无法读取-users_file") } users := strings.Split(string(content), "\n") outputFile, _ := os.Create(*output_file) defer outputFile.Close() // 抓微博 for _, user := range users { if user == "" { continue } log.Printf("抓取 @%s 的微博", user) statuses, err := contrib.GetStatuses( &weibo, *access_token, user, 0, *num_weibos, 5000) // 超时5秒 if err != nil { log.Print(err) continue } for _, status := range statuses { t, _ := time.Parse("Mon Jan 2 15:04:05 -0700 2006", status.Created_At) outputFile.WriteString(fmt.Sprintf( "%d||||%d||||%d||||%s||||%d||||%d||||%d||||%s||||%s||||%s\n", status.Id, uint32(t.Unix()), status.User.Id, status.User.Screen_Name, status.Reposts_Count, status.Comments_Count, status.Attitudes_Count, status.Thumbnail_Pic, status.Original_Pic, status.Text)) } } }