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

大家对于“保值率”这个词肯定是如数家珍,它是指一款车型使用一段时间后,出售价格与购入价格的比值,是反映汽车性价比的重要部分。相比较于外观、内饰甚至动力表现,一辆车的可靠性、用车成本以及耐用度往往是车辆“硬实力”的体现,基于此,保值率成为了衡量一辆车综合水平的关键指标。汽车更新换代的速度越来越快,车主们换车的周期也越来越短,而且,由于政策限制,想把一辆车开到报废也并不容易。所以,汽车的保值率就显得尤其重要。

1.样本数据

本文将以汽车之家17万条二手车信息,来分析主流汽车品牌的保值率,直接比较挂牌价格和新车指导价,更加贴近现实。文末附带爬虫代码。

Python爬取17w二手车保值率信息_第1张图片
image

然后再通过比较不同车龄和行驶公里数下的保值率变化,给大家一个直观的对比不同品牌汽车的保值率,希望给买车或者对汽车感兴趣的朋友做参考。

Python爬取17w二手车保值率信息_第2张图片
image

注:部分品牌的样本数据过少,可能影响分析结果

2.不同车龄的保值率对比

车龄太短,保值率波动太小,车龄太长,受车况、保养的影响又较大,所以,三年保值率,比较能反映车辆品质对保值率的影响。下图以3年保值率做排序:

Python爬取17w二手车保值率信息_第3张图片
image

国产与日系从保值率方面看,差距还是比较大,日系双雄牢牢保持在前三名。但是国产也有为国争光的,那就是人民需要什么,他就造什么的五菱神车。三年保值率达到了66%。

美系车的保值率似乎一直比较一般,当然影响保值率的因素非常多,除了车龄,行驶公里数也是一个非常重要的因素。

3.不同公里数的保值率对比

未来比较公里数对汽车保值率的影响,我们把行驶公里数划分5个阶段,下图是按照5公里内的保值率排序:

Python爬取17w二手车保值率信息_第4张图片
image

特斯拉在这里的保值率比较高,可能收到样本数据太少的影响,请忽略。

4.车型保值率

接下来是很多人最关心的,到底哪些车型的保值率最高呢?

为了减少样本数量对结果的影响,我们选择车系的样本数量在1000以上的热门车型。然后按照:中大型轿车、紧凑型轿车、SUV 三个分类来对比:

Python爬取17w二手车保值率信息_第5张图片
image

雷克萨斯ES是雷克萨斯品牌销量最好的轿车,良好的品牌口碑、考究的做工以及4年10万公里的免费保养让雷克萨斯ES有着出色的跨级竞争能力。

Python爬取17w二手车保值率信息_第6张图片
image

“平民超跑”本田飞度位列小型轿车保值率排行榜第一名。飞度不仅有着低廉的价格,省油又实用的口碑也是不少人选择它的关键;这一系列的前五名也基本被日系占领。

Python爬取17w二手车保值率信息_第7张图片
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_temp

for 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]').text
        
    print('汽车品牌:{},车系:{},总共有:{}页'.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()

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

你可能感兴趣的:(Python爬取17w二手车保值率信息)