辽宁链家新房数据采集与可视化实现

摘 要

网络爬虫也叫做网络机器人,是一种按照一定的规则,自动地抓取网络信息,进行数据信息的采集与整理的程序或者脚本。随着海量数据的出现,如何快速有效的获取到我们想要的数据成为难题。以房源信息为例,该文使用Python语言结合爬虫来对房源信息网——链家网上在售新房数据进行爬取,解读辽宁省大连市和沈阳市的新房数据背后隐藏的房源趋势。

关键词:网络爬虫;房源分析;Python;requests;lxml;

Matloplit;bs4

第1章 绪论

面对有用信息获取的需求,通用网络爬虫技术的基础上,利用 Python 软件对网络

爬虫数据抓取程序进行深度优化。

1.1 本课题研究背景

近年来,大数据、互联网和云计算等技术发展迅速,“智慧城市”建设进程加快,越来越多的实物用数据代为表示,用数据来反映问题成为一种直观又具有说服力的方式。如今,大部分地区已进入城市化进程,人口的众多与住房用地的减少使得房价大涨,如何找到合适的住房已成为常见的民生难题。

互联网为用户提供了各种房源数据,在爬虫的爬取下集中有用的数据,并对这些数据进行清洗、统计和可视化分析,可以为用户挖掘出隐藏在网络数据中的所有房源的分布情况以及价格等特征走向,帮助用户做出更好的决策。

1.2 网络爬虫发展概述

在大数据时代,信息的采集是一项重要的工作,而互联网中的数据是海量的,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。如何自动高效地获取互联网中我们感兴趣的信息并为我们所用是一个重要的问题,而爬虫技术就是为了解决这些问题而生的[1]。网络爬虫(Web crawler)也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理[2]。它是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动采集所有其能够访问到的页面内容,以获取相关数据。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或若干初始网页的 URL 开始,获得初始网页上的 URL,在抓取网页的过程中,不断从当前页面上抽取新的 URL 放入队列,直到满足系统的一定停止条件。

1.2.1 网络爬虫技术的国内外发展现状

1.国内网络爬虫技术的发展现状

1)网络爬虫技术概述

网络爬虫技术作为搜索引擎的重要组成部分,可以自动地对相关页面和内容进行爬虫和保存。网络爬虫又被称为网络蜘蛛,所以可以看出爬虫就是一只蜘蛛,而互联网其实就是一张巨大的蜘蛛网,爬虫的目的就是将蜘蛛网上的猎物全部抓取起来[3]。 2)国内外研究现状

随着互联网的快速发展,全球互联网网站和网页的数量也在迅速增长,互联网的信息量也呈指数级的增长。互联网是一个巨大的高度开放,缺乏管理的信息空间。虽然信息量十分巨大,但是对于用户来说,真正有价值的信息就变得非常有限。如果用户想要从互联网上获取有用的信息,他们需要搜素引擎的帮助,如信息检索系统。搜索引擎是根据一定的策略和特定的计算机程序从互联网进行搜索的软件系统,在处理和处理信息后为用户提供检索服务。目前市场上比较流行的搜索引擎有百度、Google 等。搜索引擎的发展伴随着信息检索技术的发展[4]。1972 年,APPNET 实验网络的成功标志着互联网的诞生。1993 年浏览器的发展更是促进了搜索引擎的快速发展。1994 年由美籍华人杨致远和 DavidFilo 共同创建了世界上第一个网络检索工具 Web Crawler,也就是大家所熟悉的 Yahoo[5]。

1.3 本课题研究意义

通过爬虫技术收集了链家网辽宁大连和沈阳市包含的有用的新房数据,并对这些数据进行清洗、统计和可视化分析,可以为用户挖掘出隐藏在网络数据中的所有房源的分布情况以及价格等特征走向,帮助用户做出更好的决策。

1.4 课题的研究主要内容

本课程设计针对爬虫技术中 requests 模块的应用进行了深入的研究,全文共分 3 章,主要内容分别是:

绪论。主要介绍了本课程设计的主要内容与主要目的;

第一部分:讲了一些常见的爬虫分类,并且简单介绍了这些爬虫背景与其适用场景;第二部分:系统框架,各框架的功能介绍,以及存储数据的属性;第三部分:代码的储存以及数据的展示。

课题的创新点在于整合辽宁省链家网两千多条新房的信息数据与结构,整合、筛

选、处理持久化存储为csv文件,并利用pandas读取分析新房数据。

第2章 系统设计

2.1 系统构架

本课程设计发挥了 requests 模块的优势,获取了辽宁链家新房的信息,Python 代码通过 pycharm 编写,编写步骤大致可分为五步:指定 url、发送请求、获取响应数据、持久化存储、数据可视化,对应数据爬取模块、数据存储模块、数据可视化模块。

图2.1 系统架构图

2.2 系统构架介绍

图2.1展示的是项目系统的整体结构, 各个模块功能简述如下:

爬虫模块:主要是用来爬取数据,爬取链家新房信息的数据,包括房源名称、房价、所属地区、销售状态、用途等。

数据存储模块:主要是通过csv进行数据存储

可视化模块:主要是对爬取的新房数据进行分析,采用了pandas处理csv存储的数据,然后通过matliplot库进行可视化处理

2.3 技术模块

表 2.1 项目所使用模块

库名

项目中作用

Requests

网页数据采集

Lxml

网页采集数据分析

Time

控制爬取数据的时间间隔

pandas

数据处理

csv

储存数据信息

matliplot

数据可视化

2.3.1requests 模块

HTTP库中的Requests模块,作用是发送网络请求,获得响应数据。

Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约大量的工作,完全满足HTTP测试需求的。requests 库的get方法,可进行特定url页面信息的检索与抓取,并在计算机屏幕中进行显示。这一过程需要使用 get方法,反复对 URL 地址队列的数据内容,进行抓取与解析操作,并将网页爬取的 URL 参数返回至 Request 对象。本文就是利用get方法获取链接页面信息。

2.3.2lxml 模块

使用lxml模块的XPath 路径语言。XPath 是用来确定 XML 文档中某些内容的语言,其能够对树状结构的数据节点进行找寻、定位,以获取到 XML 文档中具有特定属性

的元素内容。而 lxml 库作为 Python 编程系统的第三方库,也支持对 XPath

规范中的 XML 文档标签,进行标签内容语言的提取与导航。在利用lxml 库进行

XML 文档节点、文本、属性、类别等寻找的过程中,需要将 lxml 库的数据信息

导入至 etree 包,之后对网站中的楼盘信息进行爬取,保存至本地csv文件。

2.3.3time 模块

time库是Python中处理时间的标准库,是计算机时间的表达提供获取系统时间并格式化输出功能提供系统级精确计时功能,用于程序性能分析。在爬虫里面一般用作延迟爬取处理,降低爬虫的爬取频率,能有效防止网站反爬

2.3.4csv 模块

CSV文件又称为逗号分隔值文件,是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。CSV是电子表格和数据库中最常见的输入、输出文件格式。

通过爬虫将数据抓取的下来,然后把数据保存在文件,或者数据库中,这个过程称为数据的持久化存储。本节介绍Python内置模块CSV的写入操作,csv模块中的writer类可用于写入爬取的数据。

2.5 本章小结

本章主要介绍了本课程设计的系统框架,然后对各框架所涉及到的功能进行了简单介绍

第3章 系统实现

第二章中详细介绍了 Python 网络爬虫所需要的一些技术。第三章主要介绍系统的

三大基本模块——数据爬取模块、数据存储模块、数据可视化模块实现的一些细节

3.1 数据爬取

3.1.1 request库的运用

通过request库获取响应数据,一般用到get和post方法。相对于两种方法各有优势,post方法就必须要携带参数,传递一个表单,如果对表单不熟悉,就很容易报错。所以本文就以相对简单的get方法获取网页响应的请求数据,get方法可传递参数也不用传递参数,只需要判断这个网站是否有较强的反爬虫手段即可。通过链家网站发现,是需要有一定的反爬虫手段的,这样才能降低触发网站反爬虫的策略,通过传递header请求头,即可大幅度降低反爬虫风险,获取网页信息。

3.1.2XPath 的运用

在获取网页信息之后第二步就要对获得的网页信息进行解析。目前比较热门的解析方式有很多,有beautifulsoup、json、xpath等方式。每一种方式各有优势,相比于前面两种方式,对于静态网页,xpath更容易定位标签位置。通过etree解析网页数据后,调用xpath去定位链接网页每一条信息的父标签,在通过for循环遍历提取包含在父标签的每一个子标签的房源名称、房价等数据,大大提高代码的简单程度。当然提取处理的数据是列表类型,必须转换处理,并把里面一些特殊情况处理掉,就必要使用条件语句对数据进行处理。

3.2 数据存储

使用的是csv模块来存储为csv文件,好处就是相对简单,没有那么复杂,只需要调用csv模块的writer函数即可,难度比较低,且易于保存。

图 3.1 链接新房数据

3.3 数据展示

3.3.1 Pandas

Pandas提供了大量快速便捷处理数据的函数和方法。它是使Python成为强大而高效的数据分析环境的重要因素之一。

Pandas中主要的数据结构有Series、DataFrame和Panel。其中Series是一维数组,与NumPy中的一维array以及Python基本的数据结构List类似;DataFrame是二维的表格型数据结构,可以将DataFrame理解为Series的容器; Panel是三维的数组,可看作为DataFrame的容器。本文通过pandas中的groupby方法对数据进行分组处理,并将分组的数据用reset-index方法转换成二维表结构,方便提取数据。

3.3.2 Matplotlib

Matplotlib是Python 的绘图库,是用于生成出版质量级别图形的桌面绘图包,让用户很轻松地将数据图形化,同时还提供多样化的输出格式。本文就是通过matloplit库结合pandas数据处理,对链家新房数据进行可视化处理。

该图为不同地区的平均房价,通过这个折线图,清晰明了知道哪个地区房价多高,哪个地区房价滴,方便用户了解各个地区的房价差异。

图 3.2 不同地区不同住宅类型的数量占比

图 3.3 辽宁大连新房不同销售状态数据分布

该图为辽宁大连新房不同销售状态数据分布,通过改图,用户可以直观了解大连有多少待售多少在售多少售完,方便用户调整策略。

第4章 全文总结

本课程设计是基于 Python 网络爬虫的技术爬取的链接新房数据并使用matloplit库 实现了对爬取到的部分信息的可视化展示。随着信息技术越来越成熟,如何使用爬虫和数据可视化等技术更好地了解用户以及他们的意向是WEB2.0时代的关键领域。本文通过研究如何从互联网上采集相关数据,让数据采集更高效,把采集到的数据进行清洗、过滤,将有用的数据进行统计和可视化分析,从中分析和挖掘出有价值的信息,充分利用大数据潜在的价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/362620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL之索引分类,语法以及SQL性能分析(慢日志,profile,explain)

索引分类 分类含义特定关键字主键索引针对于表中主键创建的索引默认自动创建,只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以有多个UNIQUE常规索引快速定位特定数据可以有多个全文索引全文索引查找的文本中的关键字,而不是比较索引中的…

Java正则表达式之Pattern和Matcher

目录 前言一、Pattern和Matcher的简单使用二、Pattern详解2.1 Pattern 常用方法2.1.1 compile(String regex)2.1.2 matches(String regex, CharSequence input)2.1.3 split(CharSequence input)2.1.4 pattern()2.1.5 matcher(CharSequence input) 三、Matcher详解3.1 Matcher 常…

猫头虎博主第10期赠书活动:《写给大家看的Midjourney设计书》

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

基于Spark+Springboot的电商用户行为分析系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…

中科星图——2020年全球30米地表覆盖精细分类产品V1.0(29个地表覆盖类型)

数据名称: 2020年全球30米地表覆盖精细分类产品V1.0 GLC_FCS30 长时序 地表覆盖 动态监测 全球 数据来源: 中国科学院空天信息创新研究院 时空范围: 2015-2020年 空间范围: 全球 数据简介: 地表覆盖分布…

有向图查询所有环,非递归

图&#xff1a; 有向图查询所有环&#xff0c;非递归&#xff1a; import java.util.*;public class CycleTest {private final int V; // 顶点数private final List<List<Integer>> adjList; // 邻接表public CycleTest(int vertices) {this.V vertices;this.…

etcd自动化安装配置教程

文章目录 前言一、简介1. 简介2. 特点3. 端口介绍 二、etcd安装教程&#xff08;单机版&#xff09;1. 复制脚本2. 增加执行权限3. 执行脚本4. 查看启动状态5. 卸载etcd 三、etcd安装教程&#xff08;集群版&#xff09;1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 启…

【Linux】yum与vim命令详解

&#x1f497;个人主页&#x1f497; ⭐个人专栏——Linux学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读1. yum命令1.1 基本使用1.2 注意事项1.3 lrzsz软件包示例 2. vim命令2.1 vim的基本概念2.2 vim配置2.3 vim的基本操作2.3…

归并排序+非比较排序

Hello everyone&#xff01;欢迎来到排序章节目前的“终章”——归并排序&#xff0c;经过了前面三种排序的敲打&#xff0c;尤其是快速排序&#xff0c;相信你一定可以闯过这最后一关&#xff01; 归并排序 基本思想&#xff1a; 归并排序&#xff08;MERGE-SORT&#xff09;…

Idea编写mapper.xml文件提示表名和字段

一、连接database 二、setting- > language -> sql Dialects中 的选项设为 mysql就可以了 三、测试

CS144--Chapter0--wsl2+docker环境搭建

我的笔记本配置 荣耀magicbook16&#xff0c;容量是500G&#xff0c;芯片是R7-5800 由于笔记本容量较小&#xff0c;因此考虑这个方案&#xff0c;对于台式机用户&#xff0c;建议可以直接用虚拟机或者双系统。 前言 斯坦福官网给出的方法是用他们的镜像&#xff08;基于Ubu…

Android 12 系统开机动画

修改Android开机动画有两种方式 方式一、通过adb 命令来修改&#xff1a; 进入/system/media目录&#xff0c;将里面的 bootanimation.zip 文件pull出来&#xff0c;然后解压&#xff0c;替换part0和part1中的图片&#xff0c;并且根据图片大小修改文件 desc.txt 中的内容&…

跳跃表解决01背包问题

跳跃表解决01背包问题 挺有意思的题目 看算法设计与分析有跳跃点实现&#xff0c;解决空间复杂度&#xff0c;感觉好烧脑&#xff0c;就实现了一下 结果 代码 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.C…

第十篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:深度解读鸿蒙全场景适配

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例系列 短博文目录前言一、鸿蒙全场景适配实现介绍二、统一核心示例代码三、设备驱动框架示例代码四、统一界面框架示例代码五、自适应布局示例代码六、分布式能力示例代码七、跨平台开发示例代码八、设备能力开放示例…

AP6317 同步3A锂电充电IC 带散热 便携式设备 充电器

概述是一款面向5V交流适配器的3A锂离子电池充电器。它是采用800KHz固定频率的同步降压型转换器&#xff0c;因此具有高达92%以上的充电效率&#xff0c;自身发热量极小。包括完整的充电终止电路、自动再充电和一个度达1%的4.2V预设充电电压&#xff0c;内部集成了防反灌保护、输…

使用ChatGPT学习大象机器人六轴协作机械臂mechArm

引言 我是一名机器人方向的大学生&#xff0c;近期学校安排自主做一个机器人方面相关的项目。学校给我们提供了一个小型的六轴机械臂&#xff0c;mechArm 270M5Stack&#xff0c;我打算使用ChatGPT让它来辅助我学习如何使用这个机械臂并且做一个demo。 本篇文章将记录我是如何使…

jsp 产品维修管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 产品维修管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.…

【51单片机系列】应用设计——8路抢答器的设计

51单片机应用——8路抢答器设计 文章设计文件及代码&#xff1a;资源链接。 文章目录 要求&#xff1a;设计思路软件设计仿真结果 要求&#xff1a; &#xff08;1&#xff09; 按下”开始“按键后才开始抢答&#xff0c;且抢答允许指示灯亮&#xff1b; &#xff08;2&…

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)

2024年第七届亚洲能源与电气工程会议 (ACEEE 2024)将于2024年7月20-22日在中国成都举行。本次会议由电子科技大学主办&#xff0c;电子科技大学机械与电气工程学院承办。ACEEE 2024旨在为推动能源与电气工程领域科学研究的发展&#xff0c;增进各国学者之间的学术交流&#xff…

备战蓝桥杯---数据结构与STL应用(进阶1)

让我们先来看一看map的基础应用吧&#xff1a; 下面是实现代码&#xff1a; #include<bits/stdc.h> using namespace std; typedef map<int,multiset<int> > line; map<int,multiset<int> >mx; map<int,multiset<int> >my; int n,m…