【原创】Python 二手车之家车辆档案数据爬虫

简介: 【原创】Python 二手车之家车辆档案数据爬虫



本文仅供学习交流使用,如侵立删!

二手车之家车辆档案数据爬虫

先上效果图

环境

  • win10
  • python3.9
  • lxml、retrying、requests

需求分析

需求:主要是需要车辆详情页中车辆档案的数据先抓包分析一波,网页抓包没有什么有用的,转战APP

拿到数据接口就简单了,直接构造请求保存数据即可

获取车辆信息列表

   def_get_car_list(self, _url: str):

       """

       获取二手车信息列表

       """

       res = self._parse_url(_url=_url)

       ret = res.text  # 解析获得字符串类型数据

       result = etree.HTML(ret)  # 转换数据类型为HTML,方便使用xpath

       url_list = result.xpath('//*[@id="goodStartSolrQuotePriceCore0"]/ul/li/a/@href')

       ifnoturl_list:

           print('获取完成!')

           return

       foriinurl_list:

           # 有些车型url直接是带域名的

           if'www.che168.com/'ini:

               yield'https://'+i[2:]

           else:

               yield'https://www.che168.com'+i

获取车辆详情信息

   def_get_car_info(self, _url: str):

       """

       获取车辆详情信息

       """

       res = self._parse_url(_url=_url)

       ret = res.text  # 解析获得字符串类型数据

       result = etree.HTML(ret)  # 转换数据类型为HTML,方便使用xpath

       # 标题

       title = result.xpath('//div[@class="car-box"]/h3//text()')

       title = title[1].strip() iflen(title) >1elsetitle[0].strip()

       # 上牌时间

       play_time = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[1]/text()')

       play_time = play_time[0].strip() ifplay_timeelse'-'

       # 表显里程

       display_mileage = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[2]/text()')

       display_mileage = display_mileage[0].strip() ifdisplay_mileageelse'-'

       # 变速箱

       gearbox = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[3]/text()')

       gearbox = gearbox[0].strip() ifgearboxelse'-'

       # 排放标准

       emission_standards = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[4]/text()')

       emission_standards = emission_standards[0].strip() ifemission_standardselse'-'

       # 排量

       displacement = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[5]/text()')

       displacement = displacement[0].strip() ifdisplacementelse'-'

       # 发布时间

       release_time = result.xpath('//*[@id="nav1"]/div[1]/ul[1]/li[6]/text()')

       release_time = release_time[0].strip() ifrelease_timeelse'-'

       # 年检到期

       annual_inspection_expires = result.xpath('//*[@id="nav1"]/div[1]/ul[2]/li[1]/text()')

       annual_inspection_expires = annual_inspection_expires[0].strip() ifannual_inspection_expireselse'-'

       # 保险到期

       insurance_expires = result.xpath('//*[@id="nav1"]/div[1]/ul[2]/li[2]/text()')

       insurance_expires = insurance_expires[0].strip() ifinsurance_expireselse'-'

       # 质保到期

       warranty_expires = result.xpath('//*[@id="nav1"]/div[1]/ul[2]/li[3]/text()')

       warranty_expires = warranty_expires[0].strip() ifwarranty_expireselse'-'

       # 过户次数

       number_of_transfers = result.xpath('//*[@id="nav1"]/div[1]/ul[2]/li[5]/text()')

       number_of_transfers = number_of_transfers[0].strip() ifnumber_of_transferselse'-'

       # 所在地

       location = result.xpath('//*[@id="nav1"]/div[1]/ul[2]/li[6]/text()')

       location = location[0].strip() iflocationelse'-'

       # 发动机

       engine = result.xpath('//*[@id="nav1"]/div[1]/ul[3]/li[1]/text()')

       engine = engine[0].strip() ifengineelse'-'

       # 车辆级别

       vehicle = result.xpath('//*[@id="nav1"]/div[1]/ul[3]/li[2]/text()')

       vehicle = vehicle[0].strip() ifvehicleelse'-'

       # 车身颜色

       car_color = result.xpath('//*[@id="nav1"]/div[1]/ul[3]/li[3]/text()')

       car_color = car_color[0].strip() ifcar_colorelse'-'

       # 燃油标号

       fuel_label = result.xpath('//*[@id="nav1"]/div[1]/ul[3]/li[4]/text()')

       fuel_label = fuel_label[0].strip() iffuel_labelelse'-'

       # 驱动方式

       drive_mode = result.xpath('//*[@id="nav1"]/div[1]/ul[3]/li[5]/text()')

       drive_mode = drive_mode[0].strip() ifdrive_modeelse'-'

       data = [[title, play_time, display_mileage, gearbox, emission_standards, displacement, release_time, annual_inspection_expires,

                insurance_expires, warranty_expires, number_of_transfers, location, engine, vehicle, car_color, fuel_label, drive_mode, _url]]

       print(data)

       self._save_csv(data=data)


资源下载

https://download.csdn.net/download/qq_38154948/85358088


本文仅供学习交流使用,如侵立删!
相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
|
1月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
7天前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
8天前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
17天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
18天前
|
数据采集 安全 定位技术
使用代理IP爬虫时数据不完整的原因探讨
在信息化时代,互联网成为生活的重要部分。使用HTTP代理爬取数据时,可能会遇到失败情况,如代理IP失效、速度慢、目标网站策略、请求频率过高、地理位置不当、网络连接问题、代理配置错误和目标网站内容变化等。解决方法包括更换代理IP、调整请求频率、检查配置及目标网站变化。
52 11
|
2月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
22天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
30天前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
30天前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。