当前位置: 首页 > 科技观察

汽车之家二手车历史报告分析及转图练习

时间:2023-03-18 13:41:27 科技观察

1.二手车发展现状经过十多年的发展,我国二手车正进入快速发展期。仍处于起步阶段。目前,二手车市场仍然存在严重的信息不对称。车辆维修记录、事故记录等信息未公开,公民信用体系尚未建立。在此背景下,客户只能通过独立的第三方二手车鉴定机构或二手车经营机构中专业的二手车鉴定师对二手车进行全面全面的检测和鉴定以获得相对完整或近似的车辆技术状况。另一方面,国外二手车交易市场对车辆的检验非常严格。强制检查,确保事故车、泡车、烧毁车不准入内,不准异地展示、销售;欧美发达国家二手车的发展,市场已经相当成熟,已经形成了完善的市场体系,能够为二手车消费者提供充分的安全保障,获得消费者的信赖。例如,美国每年的二手车销量是新车的3.2倍。繁荣的二手车市场是一个强大的市场综合体,包括车辆信息采集、信用系统、检测系统等。独立系统相互配合,有效解决市场问题。信息不对称导致的法律风险和道德风险。二手车市场交易的目的是为了获得更高的利润。二手车行业要想获得更高的利润,就必须进行创新,而创新的驱动力主要来自于技术推广和流量增长。流量的增加可以让更多的消费者了解产品,也就是推广。技术推广就是技术的更新迭代,从而维持现有的流量人群,获取更多的利润。二手车创新最重要的一点是交易的透明性和特异性。只有交易有保障,消费者才会购买。没有信任就没有成功,企业也是如此。为二手车价格提供可靠的参考标准和车辆评估,了解二手车维修状况和事故记录,公开展示交易的交易数据,建立和规范相关交易标准。2.汽车之家二手车历史开发汽车之家二手车历史开发可分为3个阶段:0-1获取二手车维修保养记录报告,帮助商家收车及查询车辆维修保养记录报告,以在后期阶段,为购车者提供订单查询服务。维修记录报告大大增加了二手车交易过程中的信息透明度,规范买卖双方更安全地进行交易;为完善二手车事故记录,汽车之家开始接入第三方车辆事故记录报告,结合维修报告,形成汽车之家二手车综合报告,大大丰富和改善了车况二手车的保养、事故信息;随着维修保养记录报告、事故记录报告接入供应商数量的增加,汽车之家对汽车历史报告的接入形成了标准化的接入流程和接入标准。新供应商的接入实现了最少的时间投入,实现了供应商服务的动态提供。调整:提高二手车历史报告搜索率(报告查询成功概率),汽车之家二手车新增银保、车信盟等官方数据平台,更新迭代汽车历史文件,扩大数据来源在线、查询报告行业排名第一,高效帮助用户解决购车顾虑;汽车之家与北理工鑫源在新能源仿真数据在汽车信息、车主服务、二手车评估等场景的应用方面开展了深入合作。作为合作伙伴,汽车之家将与必利信源在新能源汽车电池性能评估和技术咨询方面开展战略合作。借助北理工新元的车联网大数据分析和挖掘技术和经验,结合自身的看、买、用、换等相关场景,在C端、二手车、主机厂、经销商等业务中,其规划了众多行业独有的产品和服务,进一步确立了“无人能及”的汽车生态优势。3.技术方案选择3.1Selenium是一个可以实现网页自动化和自动化测试的框架;在网页自动化方面,可以自动浏览网页,自动填写网页表单,收集网页中的数据;在自动化测试方面,一方面可以用于单元测试、回归测试、冒烟测试、集成测试、验收测试;Selenium库有一个WebDriverAPI,WebDriver可以控制浏览器的运行,它可以像BeautifulSoup或其他Selector对象一样找到页面元素,与页面上的元素进行交互(发送文本、点击等),并执行其他操作以运行网络爬虫;Selenium具有支持多语言和多浏览器的特性,为什么可以支持多语言和多浏览器,如下图1.1selenium的基本结构:具体过程步骤如下:?蓝色部分是我们开发人员的编码阶段,支持java、C#、Ruby、python、JavaScipt等语言;例如点击操作:java方法:driver.findElement(By.id()).click(),python方法:document.find_element_by_id().click();?编码阶段后,不直接与浏览器Driver通信,而是通过selenium客户端程序协议(webdriver协议)将操作转换成JSONWireProtocol;该协议定义了一套标准的接口规范,比如上面的点击操作,对应的接口协议为:POST/session/{sessionid}/element/{elementid}/click;?最后是BrowserDriver解析具体的Protocol,不需要关注客户端使用的具体开发语言,这是selenium支持多语言的特性;?浏览器驱动有各个浏览器厂商提供的驱动,每个浏览器驱动都是一个独立的服务和进程,是selenium与浏览器通信的桥梁,根据webdriver协议的解析结果,调用浏览器对应的协议控制浏览器,这是selenium支持多浏览器的特性;3.2PhantomJs是一个基于webkit的JavaScriptAPI,它以QtWebKit为核心浏览器的功能,使用webkit来编译、解释和执行JavaScript代码,它可以做任何在基于webkit的浏览器中可以做的事情;它不是它只是一个隐形的浏览器,提供了CSS选择器,支持web标准,Dom操作,Json,Html5,Canvas,SVG等,还提供了处理文件I/O的操作,让你读到操作系统写入文件等;PhantomJs用途广泛,如网络监控、网页截图、无需浏览器的web测试、页面访问自动化等;PhantomJsVSChromeDriver:PhantomJs没有界面模式,可以节省内存。记忆4.问题&备选方案作为二手车历史信息完善的一部分,车信报告让买卖双方的信息在交易过程中更加透明;第三方采用在授权固定有效期内可以正常查看报告的规则对报告使用者进行约束,报告有效期为30天。超过时间后,用户需要重新向第三方下单。因此,摆在我们面前的问题是:用户购买的剩余余额的报告,超时后无法查看;进一步的研究;阻止用户共享报告;无法永久保存报告;第三方不提供相关数据上报接口;针对以上问题,我们可以采用以下备选方案:方案一:分析报表,保存报表数据;成本:花费大量研发成本研究对方报表内容,与业务方沟通确认报表内容,最后重新开发页面适配报表展示;风险:报告分析的复杂性,第三方内容变更导致报告分析失败或不完整,对报告内容的不完全理解导致更多的解读成本;好处:无需第三方提供数据接口,实现报表数据本地存储,方便进一步研究车况,自定义报表展示页面内容,加快迭代速度报告详情;方案二:通过app客户端生成图片将报表保存到客户端;成本:使用app原生客户端开发截图功能,需要适配多终端、多尺寸、多机型,人力投入翻倍。需要满足不同客户的研发场景;风险:保存的图片报告无法随时查看,更换手机后需要通过app客户端重新下载保存,android和ios平台不同尺寸和型号的适配问题相对较大复杂的;如果忘记对报告内容进行截图,过期后无法查看报告;好处:因为是客户端截图存储,对服务器没有数据存储要求,保存到客户端相册方便客户分享图片;方案三:通过服务器端,将车辆报表生成图片,上传到图片服务器,然后绑定当前车辆报表,实现报表永久保存,随时下载分享;cost:使用服务器存储资源存储服务器端截图;风险:车辆历史报表图片异步生成,极端情况下用户无法查看或分享报表图片内容;服务器端截图图像质量问题;好处:汽车历史报告永久保存,用户分享的所有报告图片都是一样的,不存在第三方数据报告过期问题,用户可以随时随地在不同客户端查看和分享报告;五、技术方案实现步骤本文使用python开发,利用selenium的无核浏览器特性,结合phantomjs和webdriver在客户端网页创建图片流式下载上传图片服务器最终会将生成的图片地址与当前报表进行绑定;流程参考如图3.0应用步骤流程图:a)首先,配置和初始化应用程序。具体参数说明见下表:配置项说明Cxm_report_url获取第三方报表详情地址Image_upload_url图片上传地址Cxm_report_img_update_url更新报表图片标识位Reportlist返回无图片报表列表PHANTOMJS_MacOS_DIRMacOS环境PhantomJs执行目录PHANTOMJS_Linux_DIRLinux环境PhantomJs执行目录PHANTOMJS_Windows_DIRWindows环境PhantomJs执行目录配置项代码:importosbasedir=os.path.abspath(os.path.dirname(__file__))#报告地址cxm_report_url="cxm_report_url"#图片上传地址image_upload_url="image_upload_url"#更新报告地址cxm_report_img_update_url="hcxm_report_img_update_url"#报告列表reportlist="reportlist"#macosenvPHANTOMJS_js="-2.1.1-macosx/bin/phantomjs"#linuxenvPHANTOMJS_Linux_DIR="/phantomjs-2.1.1-linux-x86_64/bin/phantomjs"#windowsenvPHANTOMJS_Windows_DIR="\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe"b)获取需要生成的图片报告列表defgetreportlist():res_report=requests.get(sys_config.reportlist)reportlist=json.loads(res_report.content)returnreportlistc)上传车信的图片到图片服务器,这里需要指定上传API的身份信息和content-type。身份信息通过cookies携带提交给服务器,请求头的content-type指定application/x-www-form-urlencoded;defuploadimg(imgbase64,cxm_reportid):cookies={"cookie":"value"}data={"base64data":""+imgbase64+""}headers={'Content-Type':'application/x-www-形式urlencoded'}res_img_url=requests.post(url=sys_config.image_upload_url,data=data)res_img_json=json.loads("{"+res_img_url.text+"}")img_url=res_img_json["msg"]res_img_update=requests.post(url=sys_config.cxm_report_img_update_url)returnres_img_updated)图片生成,先初始化PhantomJs驱动,然后通过querycode查询第三方query上报详细地址,execute_script执行当前页面加载到PhantomJs计算滚动高度在页面中将底部空白的高度增加430,然后通过set_window_size宽高设置窗口,最后get_screenshot_as_base64保留客户端截图的base64图片流,将图片流上传到服务器并返回报表图片用户可以使用的地址;defgenimg(reportlist,phantomjspath):forcxmreportinreportlist["result"]:try:driver=webdriver.PhantomJS(phantomjspath)querycode=cxmreport["querycode"]cxm_reportid=cxmreport["cxm_reportid"]vincode=cxmreport["vincode"]res_cxm_url=requests.get(sys_config.cxm_report_url+querycode)res_cxm_url_json=json.loads(res_cxm_url.text)cxm_url=result_cxm_url"json]["]driver.get(cxm_url)time.sleep(5)height=0js="if(document.querySelector('.outside')!=undefined){returndocument.querySelector('.outside').scrollHeight;}else{returnwindow.innerHeight;}"height=driver.execute_script(js)height=height+430driver.set_window_size(414,height)imgbase64=driver.get_screenshot_as_base64();res_img_update=uploadimg(imgbase64,cxm_reportid)dquit()exceptExceptionase:print(str(e))六、技术方案实施经验总结第三方报表内容H5采用页面内滚动方式,直接截图解决方案只能对首页首屏进行抓图,需要根据页面中的滚动高度动态计算截屏窗口的高度,才能完整抓图;报表内容H5宽度为400px,在app上有很好的浏览效果,但是pc客户端使用服务器截图的浏览状态不佳,放大后有图像失真的效果,如果可以模拟客户端浏览器放大然后截屏,能不能提高画质?,结论是可以改进,但是第三方h5的内容布局不兼容,导致放大后布局错位,所以最后没有采取放大的措施来改进图片质量;linux服务器中文字体识别有问题,导致中文保存的图片乱码或者无法识别。为了解决这个问题,我需要把中文字体下载到Linux服务器上;由于服务器和浏览器支持的字体属性不同,所以最终保存图片的质量也因mac环境、windows环境、linux环境不同而不同。;在“平方简”字体和“宋体”字体下效果不同。解决方法是确保服务器能够支持对应的字体。截至目前,累计生成1500+车信报告,未发生生成故障;虽然多平台动态截图方案在车史报告中得到了成功应用,但仍有几个问题需要进一步探索和解决:1)图片水印没有去除;2)右侧边栏的滚动效果被截图保留,影响用户体验;3)服务器保存的图片字体质量有待提高;希望强大的Selenium+PhantomJs能够应用到更多的业务场景,比如邮件附件动态图片,web应用的自动化测试,爬虫应用等。车信报告的完整性保存为图片,一个例子是如下:linuxmacos作者简介:刘小云二手车-技术部-商家团队。2015年加入汽车之家,10+年开发经验,从事后端开发工作;负责车智影相关系统的研发;主要搭建二手车商增值业务、金豆等模块。

猜你喜欢