Python爬取17w二手车保值率信息

【Python爬取17w二手车保值率信息】大家对于“保值率”这个词肯定是如数家珍,它是指一款车型使用一段时间后,出售价格与购入价格的比值,是反映汽车性价比的重要部分。相比较于外观、内饰甚至动力表现,一辆车的可靠性、用车成本以及耐用度往往是车辆“硬实力”的体现,基于此,保值率成为了衡量一辆车综合水平的关键指标。汽车更新换代的速度越来越快,车主们换车的周期也越来越短,而且,由于政策限制,想把一辆车开到报废也并不容易。所以,汽车的保值率就显得尤其重要。
1.样本数据
本文将以汽车之家17万条二手车信息,来分析主流汽车品牌的保值率,直接比较挂牌价格和新车指导价,更加贴近现实。文末附带爬虫代码。
Python爬取17w二手车保值率信息
文章图片
image 然后再通过比较不同车龄和行驶公里数下的保值率变化,给大家一个直观的对比不同品牌汽车的保值率,希望给买车或者对汽车感兴趣的朋友做参考。
Python爬取17w二手车保值率信息
文章图片
image 注:部分品牌的样本数据过少,可能影响分析结果
2.不同车龄的保值率对比
车龄太短,保值率波动太小,车龄太长,受车况、保养的影响又较大,所以,三年保值率,比较能反映车辆品质对保值率的影响。下图以3年保值率做排序:
Python爬取17w二手车保值率信息
文章图片
image 国产与日系从保值率方面看,差距还是比较大,日系双雄牢牢保持在前三名。但是国产也有为国争光的,那就是人民需要什么,他就造什么的五菱神车。三年保值率达到了66%。
美系车的保值率似乎一直比较一般,当然影响保值率的因素非常多,除了车龄,行驶公里数也是一个非常重要的因素。
3.不同公里数的保值率对比
未来比较公里数对汽车保值率的影响,我们把行驶公里数划分5个阶段,下图是按照5公里内的保值率排序:
Python爬取17w二手车保值率信息
文章图片
image 特斯拉在这里的保值率比较高,可能收到样本数据太少的影响,请忽略。
4.车型保值率
接下来是很多人最关心的,到底哪些车型的保值率最高呢?
为了减少样本数量对结果的影响,我们选择车系的样本数量在1000以上的热门车型。然后按照:中大型轿车、紧凑型轿车、SUV 三个分类来对比:
Python爬取17w二手车保值率信息
文章图片
image 雷克萨斯ES是雷克萨斯品牌销量最好的轿车,良好的品牌口碑、考究的做工以及4年10万公里的免费保养让雷克萨斯ES有着出色的跨级竞争能力。
Python爬取17w二手车保值率信息
文章图片
image “平民超跑”本田飞度位列小型轿车保值率排行榜第一名。飞度不仅有着低廉的价格,省油又实用的口碑也是不少人选择它的关键;这一系列的前五名也基本被日系占领。
Python爬取17w二手车保值率信息
文章图片
image 保值率超过100%的奇葩现象确实存在,因为新车往往需要加价,导致实际价格高于官方指导价。越野利器“霸道”普拉多当仁不让成为了中大型SUV保值率第一名,强大而可靠的越野性能让普拉多声名鹊起,出色的口碑让它曾经一度成为平行进口车中的“销量王”。
5.部分爬虫代码

df = pd.DataFrame()# 总列表def get_data(brand, series_name): try: items = browser.find_elements_by_xpath('//div[@class="tp-cards-tofu fn-clear"]/ul[@class="viewlist_ul"]/li[@class="cards-li list-photo-li"]') except NoSuchElementException: time.sleep(6) print('遇到问题,重试') items = browser.find_elements_by_xpath('//div[@class="tp-cards-tofu fn-clear"]/ul[@class="viewlist_ul"]/li[@class="cards-li list-photo-li"]')car_list = {} df_temp = pd.DataFrame() for item in items: car_list['name'] = item.find_element_by_xpath('.//div[@class="cards-bottom"]/h4').text car_list['unit'] = item.find_element_by_xpath('.//div[@class="cards-bottom"]/p').text car_list['price'] = item.find_element_by_xpath('.//em').text# 原车价格 car_list['new_price'] = item.find_element_by_xpath('.//s').text#新车价格df_temp = df_temp.append(car_list,ignore_index=True)df_temp['brand'] = brand df_temp['series'] = series_name print('brand:',brand, df_temp.head(1), datetime.datetime.now()) return df_tempfor i in range(len(df_brand)): browser = webdriver.Chrome() url = df_brand.iloc[i]['url'] series_name = df_brand.iloc[i]['name'] brand = df_brand.iloc[i]['brand'] browser.get(url) #获取页数,除去上一页和下一页两个按钮,剩下的个数就是页数 page_count = browser.find_elements_by_xpath('//div[@class="page fn-clear"]/a') if len(page_count) < 9: page = len(page_count) - 2 else: page = browser.find_element_by_xpath('//*[@id="listpagination"]/a[8]').textprint('汽车品牌:{},车系:{},总共有:{}页'.format(brand, series_name, page), url) df = df.append(get_data(brand, series_name),ignore_index=True)# 获取第一页for i in range(int(page)-1): try: element = browser.find_element_by_link_text("下一页") except NoSuchElementException: time.sleep(6) print('########点击下一页遇到问题,重试') browser.refresh() # 刷新页面 element = browser.find_element_by_link_text("下一页")element.click() df = df.append(get_data(brand, series_name),ignore_index=True)browser.close()

如果需要样本数据和爬虫代码,可以到公众号:迷途小球迷 回复“汽车”即可获取。样本数据仅做学习用途,请勿做他用。

    推荐阅读