版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据采集与可视化案例 本章学习目标●分析链家二手房的网页结构和内容●使用requests库编写爬虫代码获取指定数据●使用BeautifulSoup实现数据的解析●使用pymysql库实现数据的持久化●使用flask和echarts实现数据可视化7.3链家二手房数据采集与可视化7.3.1页面分析根据前面的任务描述,可以知道本爬虫案例的具体需求,包括技术需求和数据需求,这是第一步。接下来将对页面结构和内容进行深度地分析,目的是为了找到链家二手房网页中跟具体需求相关的业务逻辑和业务数据。如图7-3所示,该页面能够清楚地定位到二手房的相关信息,包括地区、户型、面积、装修类型、楼层、房屋类型、售价等信息。因此,该爬虫综合案例使用的URL将是这个拥有二手房相关信息的页面。图7-3链家二手房网页数据使用鼠标右键单击页面的房屋位置之后(比如“松树桥”),将出现如下菜单选项,如图7-4所示。通过使用鼠标左键单击该菜单选项中的“检查”选项,Chrome浏览器呈现自带的“开发者工具”,并将焦点指向该“松树桥”链接控件所在的具体的HTML页面结构当中。这里的目的是为了获取该“松树桥”链接控件所属的标签在页面内容中的class属性值“positionInfo”,如图7-5所示。图7-4鼠标右键单击“松树桥”链接控件的菜单选项图7-5获取“松树桥”链接控件所属标签的class值到此,根据任务需求,通过使用CHROME浏览器访问并分析了链家二手房网站的“松树桥”链接控件在该页面中的具体位置,状态及其class属性值,为下一步使用代码的编写找准了目标。“松树桥”是二手房的位置信息,由于其是链接控件,通过右键点击“检查”可以找到具体位置。但二手房的户型、房价等信息不是控件,无法通过右键点击“检查”进行定位。为了定位二手房的其他信息,可以使用CHROME浏览器的“开发者工具”的搜索功能进行定位。比如需要定位二手房的房价信息,如图7-6所示,在搜索栏中输入“115”,可以定位房价信息的所在位置。图7-6房价信息所在页面位置因此,进一步获取房价所属的标签在页面内容中的class属性值“totalPricetotalPrice2”,如图7-7所示。二手房的户型、面积、装修类型、楼层、房屋类型、均价等其他信息可以通过同样的方法搜索从而定位到准确的位置,获取相应的class值。图7-7获取房价所属标签的class值数据安全不仅包括公民个人的数据安全,还包括企业和政府的数据安全。公民数据安全涉及个人隐私和生命安全,企业数据安全涉及商业秘密和企业权益,政府数据安全涉及国家秘密和公共利益,任何一个方面的数据安全问题处理不好,都会影响到政治安全、社会稳定、国家兴衰。数据安全法的实施,将有助于进一步提升国家数据安全保障能力,有助于加强我国应对因数据引发的国家安全风险与挑战,有助于维护国家主权、安全和发展利益。数据采集为全面数据安全管理提供数据支撑。数据采集作为数据安全建设的第一步,需将分布在各业务系统中的用户行为数据、业务支撑数据、安全事件等数据信息进行采集、存储,为后续的数据审计、分析、挖掘以及安全运营等提供数据支撑。因此,构建以大数据技术为基础的数据采集系统势在必行,成为各企业的共同选择。7.2.2数据获取在对链家二手房网页进行分析之后,现在来获取链家二手房网页中地区(region)、户型(house_type)、面积(area_list)、装修类型(decorate_type)、楼层(floor_type)、房屋类型(building_type)、售价(total_price)、单价(avg_price)的静态数据。在对页面进行了分析之后,现在就可以开始使用requests库编写自定义的爬虫代码对该部分的静态数据直接进行获取了。1)导入爬虫代码需要使用的requests库用于获取URL的页面响应数据,实现数据的精确定位和操作。importrequests2)构造爬虫代码请求该URL的Headers头部信息。在开发者工具的“Network”选项卡下的“Headers”选项卡中得到该默认URL的Headers头部信息。其目的是向智通人才网的后台服务器隐藏爬虫代码的真实身份,让爬虫代码带着这些请求信息伪装成浏览器正常访问该网站服务器的状态,而不被服务器的反爬措施发现。headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/74.0.3729.108Safari/537.36'}3)声明变量url用于获取指定的爬取的URL。这里将链家二手房页面的URL赋值给url。url='cq.lianjia/ershoufang/#d#'temp_url=url.replace("#d#",f"pg{idx}")4)声明变量response用于获取requests库的get方法从上一步指定的url和headers中获取的页面响应数据。
response=requests.get(url,headers=headers)5)使用BeautifulSoup库解析页面,进一步精确获取相应的class值。soup=BeautifulSoup(response.text,"html.parser")lis=soup.find('ul',class_='sellListContent')6)使用for循环语句遍历各个<div>标签以获取所有<div>标签中相应class值的静态数据,包括:地区(region)、户型(house_type)、面积(area_list)、装修类型(decorate_type)、楼层(floor_type)、房屋类型(building_type)、售价(total_price)、单价(avg_price)的数据。通过分析<div>的结构和内容后可以发现,任务所需要的数据均位于各自<div>标签中的不同位置。因此,这里需要获取每一个<div>标签中的指定class的内容。以房屋信息为例,需要获取class值为'houseInfo'的内容,即“2室1厅|87.76平米|南|精装|中楼层(共32层)|2008年建|塔楼”,如图7-8所示。图7-8获取class值为'houseInfo'中的指定内容由于'houseInfo'中整合了户型、面积、装修类型、楼层、房屋类型等信息,需要对该信息进行进一步分离,从而得到单独的数据。'houseInfo'爬取代码如下。二手房的地区、售价及均价等信息可以通过同样的方法可以爬取相应的数据。具体代码见完整代码。到此,通过使用requests库和BeautifulSoup库编写自定义爬虫代码实现了对链家二手房页面的静态数据的获取。xxs=lis.find_all('div',class_='houseInfo')#print(type(xxs))forainxxs:#list1=[]xx=a.text.replace('','').replace('(','_').replace(')','').split('|')#print(xx)#area_list.append(xx)house_type.append(xx[0])area_list.append(xx[1])decorate_type.append(xx[3])floor_type.append(xx[4])building_type.append(xx[-1])
数据采集与可视化案例 本章学习目标●分析链家二手房的网页结构和内容●使用requests库编写爬虫代码获取指定数据●使用BeautifulSoup实现数据的解析●使用pymysql库实现数据的持久化●使用flask和echarts实现数据可视化7.3.3数据持久化保存前面已经通过爬虫实现链家二手房数据获取,但是这些数据都只是存储在内存之中,并没有对其规范化和持久化的管理。因此,为了能够让数据结构化,使数据之间具有联系,从而更好地面向整个系统,同时提高数据的共享性、扩展性和独立性,降低冗余度,这里将使用DBMS对其统一管理和控制。这里将使用MYSQL数据库管理系统。请务必提前安装好MYSQL数据库管理系统,本案例使用的是NavicatPremium数据管理工具。1.数据持久化保存通过调用pymysql模块,使用Python语言实现连接和操作MYSQL数据库管理系统NavicatPremium中指定的数据库和表的创建和插入操作,以下七步详细介绍了数据持久化的主要过程。1)导入pymysql模块用于在Python中连接和操作MYSQL数据库管理系统。importpymysql2)使用pymysql的connect()方法,通过传入指定的参数实现对MYSQL数据库管理系统的登录和具体数据库的连接操作。这里的参数分别是:host表示将要连接的设备地址,localhost表示本机。user和password表示登录到MYSQL数据库管理系统的账号和密码。port表示登录到该数据库管理系统过程中使用的端口号,这里是3306。db表示在该数据库管理系统中已经存在的数据库。这里需要先在NavicatPremium中创建该数据库。最后,将该方法的返回值返回给变量db。db=pymysql.connect(host='localhost',user='root',password='xxxx',port=3306,db='test')3)使用cursor()方法是实现对数据库db执行SQL操作的基础。cursor=db.cursor()4)声明变量sql用于接收以字符串形式编写的SQL语句。该SQL语句的含义是:使用CREATETABLE命令创建一个名为lianjia的数据表。该表中包含region、house_type、area_list、decorate_type、floor_type、building_type、total_price、avg_price共八个字段。这八个字段正好用于接收前面对应的二手房数据信息。sql="""CREATETABLE`lianjia`(`id`int(10)NOTNULLAUTO_INCREMENT,`region`char(20)NOTNULL,`house_type`char(20)NOTNULL,`area_list`char(20)DEFAULTNULL,`decorate_type`char(20)DEFAULTNULL,`floor_type`char(20)DEFAULTNULL,`building_type`char(20)DEFAULTNULL,`total_price`char(20)DEFAULTNULL,`avg_price`char(20)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;"""5)使用execute()方法实现上面的SQL语句。在NavicatPremium中的test数据库中创建该数据表。cursor.execute(sql)6)使用SQL的INSERTINTO命令向指定的数据表lianjia中的指定的字段region、house_type、area_list、decorate_type、floor_type、building_type、total_price、avg_price中插入数据。cursor.execute("INSERTINTOlianjiaVALUES(%s,%s,%s,%s,%s,%s,%s,%s)",(region,house_type,area_list,decorate_type,floor_type,building_type,total_price,avg_price))到此,通过使用pymysql模块成功地实现了Python连接MYSQL数据库管理系统。在MYSQL数据库管理系统的test数据库中情况,如图7-9所示。图7-9数据持久化保存为了直观的了解爬取的数据,利用flask和echarts技术对数据进行可视化处理。1)使用flask技术生成一个可视化模板页面,并从数据库中读取相应的数据,结合ECharts生成的不同的图形,呈现丰富的可视化效果。如图7-10所示。图7-10的四种图形分别是折线图、饼图、条形图及表格数据,均以动态数据呈现。7.3.4数据可视化图7-10可视化界面在line1.js中,echarts生成折线图。如图7-11所示。图7-11折线图在pie1.js中,echarts生成饼图。如图7-12所示。图7-12饼图在bar1.js中,echarts生成条形图。如图7-13所示。图7-13条形图在ajax2.js中,echarts生成表格数据。如图7-14所示。图7-14表格
数据采集与可视化案例 本章学习目标●pandas读取二手房数据●使用pandas对数据进行探索●使用pandas对数据进行转换7.3.5数据探索与转换这里通过pandas读取二手房数据,并对其进行探索和转换。(1)Python中导入pandas、pymysql、re和tabulate。7.3.5数据探索与转换这里通过pandas读取二手房数据,并对其进行探索和转换。(2)设置主函数,里面包括了数据读取、探索清理数据以及转换数据。7.3.5数据探索与转换这里通过pandas读取二手房数据,并对其进行探索和转换。(3)从数据库里读取数据。7.3.5数据探索与转换这里通过pandas读取二手房数据,并对其进行探索和转换。(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 根治性肾输尿管全长切除术后护理查房
- 家庭教育辅导与儿童心理成长指南
- 多场景活动策划流程及实施指导书
- 优化医疗安全保障患者利益承诺书7篇范文
- 广东省潮州市湘桥区2026届初三下学期第三次监测英语试题含解析
- 天津市河东区天铁一中学2026届初三下学期第五次过关考试物理试题含解析
- 贵州遵义市正安县重点中学2026年初三(下)入学语文试题试卷(9月份)含解析
- 随州市重点中学2025-2026学年初三下期末质量调研(一模)物理试题含解析
- 系统故障处理进展回复函4篇范本
- 会员优惠活动规则说明7篇范文
- TCECS10287-2023钢筋连接用直螺纹套筒
- 农产品质量安全知识培训
- 南极洲地理介绍课件
- 油库安全管理规范
- 土地盐碱化课件
- 江苏省幼儿园教育技术装备标准
- 外科学课件-运动系统慢性损伤
- 古建筑油漆彩绘施工方案
- GB/T 30600-2014 高标准农田建设 通则(高清版)
- 畜牧兽医专业《猪生产学》电子教案
- 人防绝缘电阻测试记录
评论
0/150
提交评论