示例#1
0
文件: process.go 项目: kjfcpua/robot
//解析小说详情页
func (self *Www79xsComProcessor) introParse(p *robot.Page) {
	meta := p.GetRequest().GetMeta().(map[string]string)
	//开始解析页面
	query := p.GetHtmlParser()
	intro := query.Find("#info h3 p").Eq(1).Text()
	img, _ := query.Find(".img img").Attr("src")
	// 小说章节列表地址
	chaptersource, _ := query.Find(".b1 a").Attr("href")
	tmp := utils.MapCopy(meta)
	tmp["introduction"] = intro
	tmp["img"] = utils.BaseUrl + img
	tmp["chaptersource"] = utils.BaseUrl + chaptersource
	p.AddTargetRequest(utils.InitRequest(utils.BaseUrl+chaptersource, tmp, self.chaperParse))
}
示例#2
0
文件: process.go 项目: kjfcpua/robot
//小说章节解析
func (self *Www79xsComProcessor) chaperParse(p *robot.Page) {
	meta := p.GetRequest().GetMeta().(map[string]string)
	//开始解析页面
	query := p.GetHtmlParser()
	query.Find(".insert_list li").Each(func(i int, s *goquery.Selection) {
		tmp := utils.MapCopy(meta)
		tmp["chapter"] = strconv.Itoa(i)
		tmp["subtitle"] = s.Find("strong a").Text()
		addr, _ := s.Find("strong a").Attr("href")
		tmp["contenturl"] = p.GetRequest().GetBaseUrl() + addr
		//检测contenturl, 如果数据库中存在,则跳过本次抓取,如果不存在则将url加入调度队列
		//这个需求有时间再做
		if len(tmp["subtitle"]) != 0 {
			p.AddTargetRequest(utils.InitRequest(tmp["contenturl"], tmp, self.contentParse))
		}
	})
}