前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >瓜子二手车市场分析(Scrapy+Tableau)

瓜子二手车市场分析(Scrapy+Tableau)

作者头像
luanhz
发布2020-03-31 17:16:25
9340
发布2020-03-31 17:16:25
举报
文章被收录于专栏:小数志

00 概要

本文对瓜子网杭州二手车进行了爬取和简单分析,一方面是为了进一步熟练使用Python的Scrapy爬虫框架,另一方面是为了熟悉Tableau强大的数据可视化功能。

  • 数据爬取:Python3.7,Scrapy(requests抓取+xpath解析),MySQL(数据存储)
  • 数据可视化:Tableau2019.4

01 数据爬取

瓜子二手车是一个用爬虫比较容易的网站,除了设置简单的headers(实测至少需要UA和cookie)之外,并不需要其他复杂的反爬手段。目标是爬取杭州市的所有在售二手车信息,那么在限定了地点之后,需要的就是指定车的品牌,而后就可以构造各信息爬取页的url了。

为了应用Scrapy框架,只需指定一个初始页即可实现全站爬虫,但这里个人偷了个懒,所幸直接先写了一小段爬虫将所有品牌的初始页面都写入start_urls列表,以便后续调用。

记录下应用Scrapy爬取流程:

  1. 建立工程文件
  2. 生成爬虫工程及文件 i. scrapy startproject guazi ii. scrapy genspider Myguazi guazi.com
  3. 修改items.py文件信息,增加爬取字段名
  4. 实现MyGuazi.py文件的爬虫核心代码(部分代码见后文)
  5. 设置name 、allowed_domains和start_urls 3部分参数 i. 设计parse解析函数,主要获取item目标信息,并尝试提取下一页链接,递归调用parse
  6. 修改settings中关于cookie和headers的设置 i. 取消cookie_enabled = False的注释,此时表示不适用scrapy默认的cookie,而用settings中的headers信息 ii. 修改Default_request_headers信息,增加必要的请求头
  7. 修改pipelines文件 i. 将爬取的item信息逐条写入MySQL数据库
  8. 运行爬虫:Scrapy Crawl Myguazi
代码语言:javascript
复制
#获取start_urls
url = "https://www.guazi.com/hz/buy/"
html = requests.get(url=url, headers=Headers).text
hrefs = content.xpath("//div[@class='dd-all clearfix js-brand js-option-hid-info']//p/a/@href")
start_urls = ["https://www.guazi.com" + href for href in hrefs]
代码语言:javascript
复制
#解析函数
def parse(self, response):
        lis = response.xpath("//ul[@class='carlist clearfix js-top']/li")
        for li in lis:
            item = GuaziItem()
            item['car'] = li.xpath(".//a/@title").get()
            item['year'] = li.xpath(".//div[@class='t-i']/text()").get()
            item['km'] = li.xpath(".//div[@class='t-i']/text()").getall()[1]
            item['currentPrice'] = "".join(li.xpath(".//div[@class='t-price']/p//text()").getall())
            item['originalPrice'] = li.xpath(".//div[@class='t-price']/em/text()").get()
            yield item

        next_url =  response.xpath("//ul[@class='pageLink clearfix']//a[@class='next']/@href").get()
        if next_url is not None:
            next_url = "https://www.guazi.com" + next_url
            yield scrapy.Request(next_url, callback = self.parse)

注:

  • 爬取总数:41533
  • 全站实有数:112332

之所以Scrapy未实现“全站”爬取的原因在于网站仅列出各车型50页的数据(每页40条),当某一品牌二手车数量大于2000辆时,后续信息无法获得。(暂未找到解决办法)


02 数据可视化

主要是分析2个信息:

  • 杭州二手车市场概况,包括品牌占比、换车时间、行驶里程、原价和现价等;

表达的信息都在仪表盘里

  • 二手车保价率信息,主要是随使用年限和行驶里程的拟合曲线,并重点分析了几种品牌车型的保价率情况。

保价率=现价/原价

2个结论:

  1. 保价率与使用年限和行驶里程呈现高度负相关;
  2. 不同品牌车保价率随使用年限变化曲线略有不同,在列出的8个基数比较大的二手车品牌中,保价率随使用年限呈现3个梯队,以使用5年为参考基准:
  • 保价率在0.5以上的:本田(约0.65)、日产(约0.55),均为日系车
  • 保价率在0.5左右的:奔驰、奥迪、现代,两个德系,一个韩系
  • 保价率在0.5以下的:宝马(约0.45)、长安(约0.45)、哈弗(约0.4),一个德系,两个国产。

二手车市场上,在品牌和质量方面齐名的"奥宝驰"不仅数量差别明显,在保价率上也是高下立判;日系车保价率居然最高;国产车的质量发展和品牌打造仍然任重而道远。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小数志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档