• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang common.Yield类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/zhangxiaoyang/goDataAccess/spider/common.Yield的典型用法代码示例。如果您正苦于以下问题:Golang Yield类的具体用法?Golang Yield怎么用?Golang Yield使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Yield类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: Process

func (this *LazyProcesser) Process(resp *common.Response, y *common.Yield) {
	y.AddItem(func() *common.Item {
		item := common.NewItem()
		item.Set("html", resp.Body)
		return item
	}())
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:7,代码来源:lazy_processer.go


示例2: Process

func (this *MyProcesser) Process(resp *common.Response, y *common.Yield) {
	m := regexp.MustCompile(`(?s)<div id="ua_string">.*?</span>(.*?)</div>`).FindAllStringSubmatch(resp.Body, -1)
	for _, v := range m {
		item := common.NewItem()
		item.Set("user-agent", v[1])
		y.AddItem(item)
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:8,代码来源:inject_useragent.go


示例3: processTitle

func (this *MyProcesser) processTitle(resp *common.Response, y *common.Yield) {
	m := regexp.MustCompile(`(?s)<div class="channel-item">.*?<h3><a href="(.*?)">(.*?)</a>`).FindAllStringSubmatch(resp.Body, -1)
	for _, v := range m {
		item := common.NewItem()
		item.Set("url", v[1])
		item.Set("title", v[2])
		y.AddItem(item)
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:9,代码来源:crawl_douban_page_by_page.go


示例4: Process

func (this *MyProcesser) Process(resp *common.Response, y *common.Yield) {
	y.AddItem(func() *common.Item {
		item := common.NewItem()
		item.Set("url", resp.Url)
		item.Set("title", func() string {
			m := regexp.MustCompile(`<title>(.*?)</title>`).FindStringSubmatch(resp.Body)
			if len(m) > 0 {
				return m[1]
			}
			return ""
		}())
		return item
	}())
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:14,代码来源:crawl_baidubaike_and_store_it.go


示例5: Process

func (this *MyProcesser) Process(resp *common.Response, y *common.Yield) {
	items := extractor.NewExtractor().
		SetScopeRule(`(?s)<dt class="basicInfo-item name">.*?</dd>`).
		SetRules(map[string]string{
			"key":   `(?s)name">(.*?)</dt>`,
			"value": `(?s)value">(.*?)</dd>`,
		}).
		SetTrimFunc(extractor.TrimHtmlTags).
		Extract(resp)

	for _, item := range items {
		y.AddItem(item)
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:14,代码来源:crawl_baidubaike_with_extractor.go


示例6: processItems

func (this *QuickEngineProcesser) processItems(resp *common.Response, y *common.Yield, rule _Rule) {
	var TrimFunc extractor.TrimFunc
	switch rule.ItemRule.TrimFunc {
	case "trim_html_tags":
		TrimFunc = extractor.TrimHtmlTags
	case "trim_blank":
		TrimFunc = extractor.TrimBlank
	}

	items := extractor.NewExtractor().
		SetScopeRule(rule.ItemRule.ScopeRule).
		SetRules(rule.ItemRule.KVRule).
		SetTrimFunc(TrimFunc).
		Extract(resp)
	for _, item := range items {
		y.AddItem(item)
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:18,代码来源:quick_engine.go


示例7: Process

func (this *QuickEngineProcesser) Process(resp *common.Response, y *common.Yield) {
	common.Try(func() {
		for _, rule := range this.config.Rules {
			if regexp.MustCompile(rule.UrlMatch).MatchString(resp.Url) {
				if rule.Succ != "" && !strings.Contains(resp.Body, rule.Succ) {
					log.Printf("cannot find succ string:%s", rule.Succ)
					break
				}
				if rule.ItemRule.ScopeRule != "" {
					this.processItems(resp, y, rule)
				}
				if rule.RequestRule.ScopeRule != "" {
					this.processRequests(resp, y, rule)
				}
				y.SetMerge(rule.Merge)
				break //Only use the first match
			}
		}
	}, func(e interface{}) {
		log.Printf("pannic %s\n", e)
	})
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:22,代码来源:quick_engine.go


示例8: processRequests

func (this *QuickEngineProcesser) processRequests(resp *common.Response, y *common.Yield, rule _Rule) {
	var TrimFunc extractor.TrimFunc
	switch rule.RequestRule.TrimFunc {
	case "trim_html_tags":
		TrimFunc = extractor.TrimHtmlTags
	case "trim_blank":
		TrimFunc = extractor.TrimBlank
	}

	items := extractor.NewExtractor().
		SetScopeRule(rule.RequestRule.ScopeRule).
		SetRules(rule.RequestRule.KVRule).
		SetTrimFunc(TrimFunc).
		Extract(resp)
	for _, item := range items {
		for _, url := range item.GetAll() {
			if strings.HasPrefix(url, "http://") {
				y.AddRequest(common.NewRequest(url))
			} else {
				y.AddRequest(common.NewRequest(rule.BaseUrl + url))
			}
		}
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:24,代码来源:quick_engine.go


示例9: processNext

func (this *MyProcesser) processNext(resp *common.Response, y *common.Yield) {
	m := regexp.MustCompile(`(?s)<span class="next">.*?<a href="(.*?)"`).FindStringSubmatch(resp.Body)
	if len(m) > 0 {
		y.AddRequest(common.NewRequest(this.baseUrl + m[1]))
	}
}
开发者ID:zhangxiaoyang,项目名称:goDataAccess,代码行数:6,代码来源:crawl_douban_page_by_page.go



注:本文中的github.com/zhangxiaoyang/goDataAccess/spider/common.Yield类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang zk.Conn类代码示例发布时间:2022-05-28
下一篇:
Golang cli.App类代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap