Example #1
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))
}
Example #2
0
func main() {
	flag.Parse()

	// 得到 CrawlClient
	conn, err := grpc.Dial(*address, grpc.WithInsecure())
	if err != nil {
		log.Fatal(err)
	}
	client := pb.NewCrawlClient(conn)

	log.Printf("开始抓取")
	request := pb.CrawlRequest{
		Url:        *url,
		Timeout:    10000,
		RecrawlTtl: *ttl,
		Method:     pb.Method(pb.Method_value[*method]),
	}
	response, err := client.Crawl(context.Background(), &request)
	if err != nil {
		log.Fatal(err)
	}

	log.Printf("抓取完毕")
	log.Printf("%+v", response.Metadata)
	log.Printf("%d", len(response.Content))
}
Example #3
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,
			Method:         pb.Method(pb.Method_value[*method]),
		}
		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))
	}
}