通过页面查看,可发现在城市筛选区可得到全部的二手车城市列表,但是你仔细查阅代码。会发现它是JS加载进来的,城市也统一放在了一个变量中
有两种提取方法
在这里我们直接将其复制粘贴出来即可,因为这是比较少变动的值
通过分析页面可以得知分页链接是有一定规律的,例如:/2sc/hangzhou/a0_0msdgscncgpi1ltocsp2exb4/,可以发现sp%d,sp后面为页码
按照常理,可以通过预测所有分页链接,推入队列后goroutine一波即可快速拉取
但是在这老产品库存在一个问题,在超过100页后,下一页永远是101页
因此我们采取比较传统的做法,通过拉取下一页的链接去访问,以便适应可能的分页链接改变;100页以后的分页展示也很奇怪,先忽视
页面结构较为固定,常规的清洗HTML即可
funcGetCars(doc*goquery.Document)(cars[]QcCar){cityName:=GetCityName(doc)doc.Find(".piclistulli:not(.line)").Each(func(iint,selection*goquery.Selection){title:=selection.Find(".titlea").Text()price:=selection.Find(".detail.detail-r").Find(".colf8").Text()kilometer:=selection.Find(".detail.detail-l").Find("p").Eq(0).Text()year:=selection.Find(".detail.detail-l").Find("p").Eq(1).Text()kilometer=strings.Join(compileNumber.FindAllString(kilometer,-1),"")year=strings.Join(compileNumber.FindAllString(strings.TrimSpace(year),-1),"")priceS,_:=strconv.ParseFloat(price,64)kilometerS,_:=strconv.ParseFloat(kilometer,64)yearS,_:=strconv.Atoi(year)cars=append(cars,QcCar{CityName:cityName,Title:title,Price:priceS,Kilometer:kilometerS,Year:yearS,})})returncars}数据
在各城市的平均价格对比中,我们可以发现北上广深里的北京、上海、深圳都在榜单上,而近年势头较猛的杭州直接占领了榜首,且后几名都有一些距离
而其他城市大致都是梯级下降的趋势,看来一线城市的二手车也是不便宜了,当然这只是均价
我们可以看到价格和公里数的对比,上海、成都、郑州的等比差异是有点大,感觉有需求的话可以在价格和公里数上做一个衡量
这图有点儿有趣,粗略的统计了一下总公里数。在前几张图里,平均价格排名较高的统统没有出现在这里,反倒是呼和浩特、大庆、中山等出现在了榜首
是否侧面反应了一线城市的车辆更新换代较快,而较后的城市的车辆倒是换代较慢,公里数基本都杠杠的
通过对标题的分析,可以得知车辆产品库的命名基本都是品牌名称+自动/手动+XXXX款+属性,看标题就能知道个概况了