您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 基于Python的汽车信息爬取与分析
二、《基于Python的汽车数据爬取与分析》1课题内容和要求1.1问题的提出1)用Python语言自行编写爬虫框架或使用Scrapy框架,爬取汽车之家或易车网的车辆相关数据,按照品牌、车系、年款、价格等信息进行分类和显示。2)使用正则表达式从网页中提取有用的数据。3)可以实现多线程爬取,以提高爬取效率。4)在此基础上可以进一步获取用户反馈信息,评价不同车型的优劣。1.2选题背景与意义在现在这种互联网浪潮下,信息正在扮演越来越重要的角色。人们获取信息,分析信息,利用信息。而怎样快速便捷地获取信息成为人们非常关注的问题。同时,随着中国工业化水平和经济水平的提高,汽车成为家庭必需品。人们对汽车信息的需求也在不断增大。在此背景下,我们选择了“基于python的汽车信息爬取与分析”这个课题,因为我们想要通过这次锻炼切实地解决一个现实问题。1.3开发工具简介a)运行环境如果要运行此软件,用户计算机必须有Python环境和Scrapy环境。b)开发环境本软件基于Python3.6和Scrapy1.4开发Scrapy各组件版本号如下:Scrapy:1.4.0lxml:4.0.0.0libxml2:2.9.5cssselect:1.0.1parsel:1.2.0w3lib:1.18.0Twisted:17.5.0Python:3.6.1(v3.6.1:69c0db5,Mar212017,17:54:52)pyOpenSSL:17.3.0(OpenSSL1.1.0f25May2017)Platform:Windows-10-10.0.15063-SP0c)开发工具Pycharm、cmder2需求分析2.1可行性分析技术可行性:python在爬虫方面有资源和环境优势。易车网对爬虫脚本比较友好。操作可行性:Scrapy作为一个非常强大的爬虫框架,有着它易用,高效的一面。同时由于Scrapy对于有python学习背景的人来说上手不算困难,故此项目可以用Scrapy来实现。2.2系统数据需求本系统最终将爬取到的数据以csv文件存储在本地项目根目录下,方便用户通过excel软件直接对数据进行查看和分析。2.3系统的性能需求此系统基于Scrapy框架,由于Scrapy默认支持多线程爬取,系统的性能基本可以达到要求。而稍后的测试结果也佐证了此结果。3概要设计3.1系统结构的总体设计3.2系统模块设计基于scrapy,我们的项目分为4个模块,分别是定义爬取数据模块、爬取模块、配置模块和数据处理模块。我们在item.py中CarItem类中定义要爬取的数据,如品牌、车系、年款、价格等等。爬取模块会直接引用该类创建的对象对数据进行保存。我们在pipelines.py中设置对爬取下来的数据的处理方式,比如存储方式、过滤去重等操作。该文件从bitauto.py文件中获取爬取到的信息,并进行相关处理。我们在settings.py中对项目进行一些必要设置,如优先级、多线程、延迟等。同时在测试时,我们可以根据修改此文件的配置信息来控制变量测试相关因素对爬取效率的影响。bitauto.py是主要爬取方法实现的文件。分析网页,获取信息,跳转页面等等核心操作全部由此文件来实现。4详细设计类图:核心算法流程图:核心操作全部在bitauto.py中实现,故此部分主要描述bitauto.py的设计。具体实现采用面向过程的编程方法,具体到代码则是4个方法,分别是parse(),parse_detail(),parse_soft()和parse_word()方法。Parse()方法用于从主页面获取品牌信息列表,并生成相关车系链接并调用parse_detail()方法对车系页面进行处理。分析源码发现当前热销的汽车品牌保存在一个无序列表ul中。我们对此无序列表中的每个li标签进行遍历,获取它的href属性并生成绝对链接。在每生成一个链接之后,我们可以在yield语句中调用request方法进到下级页面去获取相关信息。Parse_detail()方法用于获取某品牌的车系列表,并生成相关车辆具体信息页面的URL,调用parse_soft()方法对车辆的详情页面进行处理。分析当前页面源码发现各种车型都被包裹在一个div标签中。我们可以对此标签下的a标签进行获取,并得到href属性,这里得到的是相对链接,然后把它拼接成绝对链接,这样我们就获取到了每个车型的详情页面。同样使用yield调用request方法可以进行下级页面的分析。Parse_soft()方法爬取车辆的基本信息,包括品牌、车系、年款、价格和评分,并生成口碑链接调用parse_word()方法对车辆的口碑信息进行处理。此页面的处理比较简单,我们需要的各种信息都以各种标签的形式直接出现在源码中,直接可以提取出来。然后获取口碑链接以同样的方法跳转口碑页面。Parse_word()方法用于获取车辆的优缺点和用户评论,此方法是最后一个方法。此页面中将优点、缺点和评论分别放在一个div中,对div进行遍历,即可得到相关数据。它们的调用关系是逐级调用。5测试数据及其结果分析为了测试爬取数据的正确性,我们设计爬取易车网当前热销的16款品牌下的所有车型,共计约500款,而我们对此爬取的结果与我们直接在网站上记录的结果数目基本吻合,为此可证软件的正确性。在延迟设置为1s的情况下,观察爬取结果发现,平均每分钟可以爬取50—58条数据,而当延迟设置为0.25s,我们的爬取速度平均每秒达到了4条数据。由此我们可以得出,该项目的性能能够满足用户的基本需求。
本文标题:基于Python的汽车信息爬取与分析
链接地址:https://www.777doc.com/doc-4228683 .html