Exemple #1
0
func main() {
	flag.Parse()

	// 创建新 ZergClient
	zc, err := zerg_client.NewZergClient(*endPoints, *serviceName)
	if err != nil {
		log.Fatal(err)
	}
	defer zc.Close()

	// 调用 client.Crawl 前必须先调用 Get 命令获取 CrawlClient,通过 url 的一致性哈希进行分配
	// 不同的 url 要分别调用 Get 得到不同的 CrawlClient
	if crawlClient, err := zc.Get(*url); err == nil {
		// RPC 调用
		request := pb.CrawlRequest{
			Url:            *url,
			Timeout:        10000, // 超时 10 秒
			CrawlFrequency: *freq,
		}
		response, err := crawlClient.Crawl(context.Background(), &request)
		if err != nil {
			// 处理异常
			log.Fatal(err)
		}

		// 处理返回结果
		log.Printf("metadata = %+v", response.Metadata)
		log.Printf("page content length = %d", len(response.Content))
	}
}
Exemple #2
0
func main() {
	flag.Parse()

	if *url == "" {
		log.Fatal("--url 参数不能为空")
	}

	dcc, err := zerg_client.NewZergClient(*endPoints, *serviceName)
	if err != nil {
		log.Fatal(err)
	}

	request := pb.CrawlRequest{Url: *url, Timeout: 10000, CrawlFrequency: *freq}
	log.Printf("开始抓取")
	for i := 0; i < 10; i++ {
		client, err := dcc.Get(*url)
		if err != nil {
			log.Fatal(err)
		}

		response, err := client.Crawl(context.Background(), &request)
		if err != nil {
			log.Fatal(err)
		}
		log.Printf("%+v", response.Metadata)
		log.Printf("%d", len(response.Content))
	}
}
Exemple #3
0
func main() {
	flag.Parse()

	// 创建新 ZergClient
	zc, err := zerg_client.NewZergClient(*endPoints, *serviceName)
	if err != nil {
		log.Fatal(err)
	}
	defer zc.Close()

	// 调用 zerg 服务
	request := pb.CrawlRequest{
		Url:        *url,
		Timeout:    10000, // 超时 10 秒
		RecrawlTtl: *ttl,
		Method:     pb.Method(pb.Method_value[*method]),
	}
	response, err := zc.Crawl(&request)
	if err != nil {
		// 处理异常
		log.Fatal(err)
	}

	// 处理返回结果
	log.Printf("metadata = %+v", response.Metadata)
	log.Printf("page content length = %d", len(response.Content))
}