Exemple #1
0
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)
	}
}
Exemple #2
0
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))
		}
	}
}