示例#1
0
文件: sync.go 项目: nzai/lottery
//  通过列表抓取开奖结果
func fetchData() ([]entity.TwoColorBall, error) {
	//  抓取网页
	frontHtml, err := util.DownloadHtml("http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html")
	if err != nil {
		log.Println("下载网页失败: ", err.Error())
		return nil, err
	}
	//log.Printf("%s", html)

	//  获取一共有几页
	regex := regexp.MustCompile(`<p class="pg"> 共<strong>(\d+)</strong> 页`)
	group := regex.FindSubmatch(frontHtml)
	if len(group) < 1 {
		return nil, errors.New("分析结果页数失败")
	}

	pageCount, _ := strconv.Atoi(string(group[1]))
	//log.Println("共", pageCount, "页")

	var html string
	list := make([]entity.TwoColorBall, 0)
	for index := 1; index <= pageCount; index++ {
		if index == 1 {
			//  首页已经抓取过了
			html = string(frontHtml)
		} else {
			//  抓取网页
			content, err := util.DownloadHtml(fmt.Sprintf("http://kaijiang.zhcw.com/zhcw/html/ssq/list_%d.html", index))
			if err != nil {
				log.Println("下载网页失败: ", err.Error())
				return nil, err
			}

			html = string(content)
		}

		//  分析Html,抓取信息
		results, err := analyzeHtml(html)
		if err != nil {
			log.Println("下载网页失败: ", err.Error())
			return nil, err
		}

		//  把每页的分析结果添加进结果集
		list = append(list, results...)
	}

	return list, nil
}
示例#2
0
文件: sync.go 项目: nzai/lottery
//  通过列表抓取开奖结果
func fetchData() ([]entity.SuperLotto, error) {
	//  抓取网页
	frontHtml, err := util.DownloadHtml("http://www.lottery.gov.cn/historykj/history.jspx?_ltype=dlt")
	if err != nil {
		log.Println("下载网页失败: ", err.Error())
		return nil, err
	}
	//log.Printf("%s", html)

	//  获取一共有几页
	regex := regexp.MustCompile(`共\d+条记录 \d+/(\d+)页`)
	group := regex.FindSubmatch(frontHtml)
	if len(group) < 1 {
		return nil, errors.New("分析结果页数失败")
	}

	pageCount, _ := strconv.Atoi(string(group[1]))
	// log.Println("共", pageCount, "页")

	var html string
	list := make([]entity.SuperLotto, 0)
	for index := 1; index <= pageCount; index++ {
		if index == 1 {
			//  首页已经抓取过了
			html = string(frontHtml)
		} else {
			//  抓取网页
			content, err := util.DownloadHtml(fmt.Sprintf("http://www.lottery.gov.cn/historykj/history_%d.jspx?_ltype=dlt", index))
			if err != nil {
				log.Println("下载网页失败: ", err.Error())
				return nil, err
			}

			html = string(content)
		}

		//  分析Html,抓取信息
		results, err := analyzeHtml(html)
		if err != nil {
			log.Println("下载网页失败: ", err.Error())
			return nil, err
		}

		//  把每页的分析结果添加进结果集
		list = append(list, results...)
	}

	return list, nil
}