pholcus_lib

package
v0.0.0-...-9397c3f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2017 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Kunlunxt = &Spider{
	Name:        "昆仑信托",
	Description: "昆仑信托净值数据 [Auto Page] [http://www.kunluntrust.com/xinxipilu/chanpinxinxi/chanpinjingzhi/]",

	NotDefaultField: true,

	Namespace: func(*Spider) string {
		return "xintuo"
	},

	SubNamespace: func(self *Spider, dataCell map[string]interface{}) string {
		return "fund_src_nav"
	},

	EnableCookie: false,
	RuleTree: &RuleTree{

		Root: func(ctx *Context) {
			ctx.Aid(map[string]interface{}{"loop": [2]int{1, 2}, "Rule": "生成请求"}, "生成请求")
		},

		Trunk: map[string]*Rule{

			"生成请求": {

				AidFunc: func(ctx *Context, aid map[string]interface{}) interface{} {
					for loop := aid["loop"].([2]int); loop[0] < loop[1]; loop[0]++ {
						ctx.AddQueue(&request.Request{
							Url:  "http://www.kunluntrust.com/xinxipilu/chanpinxinxi/chanpinjingzhi/",
							Rule: aid["Rule"].(string),
						})
					}
					return nil
				},
				ParseFunc: func(ctx *Context) {
					query := ctx.GetDom()

					ss := query.Find(".cmspage ul").Find("li")

					page := 0

					ss.Each(func(i int, goq *goquery.Selection) {
						title := goq.Text()
						if title != "<" && title != "1" && title != ">" {

							url, exist := goq.Find("a").Attr("href")
							if exist {

								page++

								ctx.AddQueue(&request.Request{
									Url:  "http://www.kunluntrust.com/xinxipilu/chanpinxinxi/chanpinjingzhi/" + url,
									Rule: "获取结果",
									Temp: map[string]interface{}{
										"level1pages": page,
									},
								})
							}
						}
					})
				},
			},

			"获取结果": {

				ItemFields: []string{
					"基金ID",
					"名称",
					"净值",
					"累计净值",
					"估值日期",
				},
				ParseFunc: func(ctx *Context) {
					query := ctx.GetDom()

					ss := query.Find(".aj_list").Find("dl")

					var page1 int
					ctx.GetTemp("level1pages", &page1)

					recordCount := 0

					ss.Each(func(i int, goq *goquery.Selection) {

						classattr, exist := goq.Attr("class")
						fmt.Println(classattr)
						if exist == false {

							ssaa := goq.Children()
							count := 0

							var mingchen string
							var jingzhi string
							var leijijingzhi string
							var guzhiriqi string

							ssaa.Each(func(i int, goqaa *goquery.Selection) {

								titleLine := goqaa.Children().Eq(0).Text()
								if titleLine != "产品名称" {

									count++

									if count%3 == 1 {
										mingchen = goqaa.Text()
									}

									if count%3 == 2 {
										jingzhi = goqaa.Text()
										leijijingzhi = goqaa.Text()
									}

									if count%3 == 0 {
										guzhiriqi = goqaa.Text()

										recordCount++
										fundID := "XTKUNLUN" + "P1" + strconv.Itoa(page1) + "L" + strconv.Itoa(recordCount)

										ctx.Output(map[int]interface{}{
											0: fundID,
											1: mingchen,
											2: jingzhi,
											3: leijijingzhi,
											4: guzhiriqi,
										})
									}

								}
							})
						}
					})
				},
			},
		},
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL