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

news2024/11/15 17:42:57

摘 要

网络爬虫也叫做网络机器人,是一种按照一定的规则,自动地抓取网络信息,进行数据信息的采集与整理的程序或者脚本。随着海量数据的出现,如何快速有效的获取到我们想要的数据成为难题。以房源信息为例,该文使用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时代的关键领域。本文通过研究如何从互联网上采集相关数据,让数据采集更高效,把采集到的数据进行清洗、过滤,将有用的数据进行统计和可视化分析,从中分析和挖掘出有价值的信息,充分利用大数据潜在的价值。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JAVE SE】---运算符和程序逻辑控制语句

1.运算符 算数运算符 - * / % 注意:1.Java的%符号左右两边可以是小数,也可以是负数 //运算符float a1.0f;float b2.0f;float c-1.5f;System.out.println(a%b); //1.0System.out.println(a%c); //1.0 2.Java中除数不可以为0&#xff0c…

华为配置ARP安全综合功能实验

配置ARP安全综合功能示例 组网图形 图1 配置ARP安全功能组网图 ARP安全简介配置注意事项组网需求配置思路操作步骤配置文件 ARP安全简介 ARP(Address Resolution Protocol)安全是针对ARP攻击的一种安全特性,它通过一系列对ARP表项学习和A…

如何用MapTalks IDE来发布网站?

简介 MapTalks IDE 全称 MapTalks集成设计环境(Integrated Design Environment),是由MapTalks技术团队开发的新一代web地图设计软件。 通过MapTalks IDE,您可以自由的创建二维和三维地图,在其中载入或创建地理数据&a…

Opencv(C++)学习 TBB与OPENMP的加速效果实验与ARM上的实践(二)

在上一篇文章中,我们成功验证了Intel Threading Building Blocks (TBB) 与 OpenMP 在多线程并行处理方面的加速潜力。为了更深入地理解这些技术在实际应用场景中的效能提升,接下来我们将目光转向目标开发板环境,进一步探究这两种框架在嵌入式…

Vue-49、Vue技术实现动画效果

1、首先&#xff0c;在Vue项目中的src/components文件夹下创建一个名为AnimatedBox.vue的文件。 2、编辑AnimatedBox.vue文件&#xff0c;添加以下代码&#xff1a; <template><div class"animated-box" click"toggle"><transition name&q…

文本生成高清、连贯视频,谷歌推出时空扩散模型

谷歌研究人员推出了创新性文本生成视频模型——Lumiere。 与传统模型不同的是&#xff0c;Lumiere采用了一种时空扩散&#xff08;Space-time&#xff09;U-Net架构&#xff0c;可以在单次推理中生成整个视频的所有时间段&#xff0c;能明显增强生成视频的动作连贯性&#xff…

Fiddler修改https请求与响应 bug修复变灰了选不了等 Fiddle对夜神模拟器抓包设置

不要修改别人的东西&#xff0c;不要修改别人的东西&#xff0c;不要修改别人的东西 只用于自己的网站&#xff0c;自己安全调试。 fiddler修改https请求 1、打到要改的请求 2、替换请求内容 3、开启捕获。操作产生请求。 4、fiddler里查看请求或响应数据 &#xff0c;确认成…

RK3588平台开发系列讲解(视频篇)H.264码流结构介绍

文章目录 一、 码流查看工具二、 I帧、 P帧、 B帧三、序列四、GOP, 即关键帧间隔五、片和宏块沉淀、分享、成长,让自己和他人都能有所收获!😄 📢H.264码流结构介绍。 一、 码流查看工具 ① H.264码流查看工具: Elecard_streamEye、 Elecard StreamEye Tools、 Special…

[嵌入式系统-7]:龙芯1B 开发学习套件 -4- LoongIDE 集成开发工具的使用-创建应用程序工程、编译、下载、调试

目录 前言&#xff1a; 步骤1&#xff1a;设置工作工作空间 步骤2&#xff1a;设置工具链 步骤3&#xff1a;创建裸机应用程序 步骤4&#xff1a;创建带实时操作系统的应用程序 步骤5&#xff1a;编译 步骤6&#xff1a;下载调试 前言&#xff1a; LoongIDE集成开发环境…

使用post-css实现移动端适配

介绍移动端适配以及适配方案 适配原因 移动端不像PC端,有足够大的屏幕展示较多的内容不同的移动端设备&#xff0c;有不同屏幕宽度同样大小的页面元素在不同屏幕宽度设备展示时&#xff0c;布局就会错乱有些元素没有展示在可视范围内有些元素不能撑满整个屏幕&#xf…

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【Go-Zero】Windows11下etcd的安装与初步使用 大家好 我是寸铁&#x1f44a; 总结了一篇Windows11下etcd的安装与初步使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言&#xff1a; 在使用etcd 前&#xff0c;我们需要了解一下etcd 是什么&#xff0c;为什么使用etcd…

运维SRE-04 磁盘管理体系

磁盘管理体系详解 磁盘管理系统概述 目标 熟练掌握常用磁盘配置(容量,转速,个数)熟练说出来或写出来: raid级别熟练掌握磁盘基础使用:拿到一块硬盘到可以向硬盘写入数据分区,格式化,挂载熟练掌握: 磁盘空间不足 no space left on device 故障,原因,排查,解决. 磁盘基础内容 …

Spring Boot 中操作 Bean 的生命周期

1.InitializingBean和DisposableBean InitializingBean接口提供了afterPropertiesSet方法&#xff0c;用于在bean的属性设置好之后调用&#xff1b; DisposableBean接口提供了destroy方法&#xff0c;用于在bean销毁之后调用&#xff1b; public class TestComponent implem…

基于微服务的高考志愿智能辅助决策系统(附源码)

目录 一.引言 1、编写目的 2、系统功能概述 二.功能分析 三.微服务模块 1、微服务用户相关模块 &#xff08;1&#xff09;用户注册 &#xff08;2&#xff09;用户登录 &#xff08;3&#xff09;用户信息管理 &#xff08;4&#xff09;用户操作 2、微服务文件云存…

政安晨的机器学习笔记——跟着演练快速理解TensorFlow(适合新手入门)

准备工作 本笔记是假设您已经安装了Windows系统或Ubuntu系统的Anaconda&#xff08;或 Miniconda&#xff09;、Jupyter Notebook、TensorFLow&#xff0c;稍微了解Python语言&#xff0c;并可以进行一点点操作的基础上进行的。 如果您还不具备这个条件&#xff0c;去…

Android进阶之路 - ViewPager2 比 ViewPager 强在哪?

我记得前年&#xff08;2022&#xff09;面试的时候有被问到 ViewPager 和 ViewPager2 有什么区别&#xff1f;当时因为之前工作一直在开发售货机相关的项目&#xff0c;使用的技术要求并不高&#xff0c;所以一直没去了解过 ViewPager2~ 去年的时候正好有相关的功能需求&#…

安卓线性布局LinearLayout

<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:…

关于谷歌新版调试用具(Chrome Dev Tool ),网络选项(chrome-network)默认开启下拉模式的设置

今天在使用谷歌浏览器进行调试的时候&#xff0c;打开调试工具网络选项发现过滤不同模式的选项卡不见了&#xff0c;转而变成一个下拉式选项&#xff0c;如下图 这样一来使得切换不同类型查看的时候变得非常不方便&#xff0c;然后网上查了一下发现这个功能谷歌在很早版本就已…

如果我要访问一个网址,那么在网络中会有哪些过程

访问一个网址是我们日常网络使用中非常常见的操作&#xff0c;背后涉及到一系列精密而复杂的步骤。这个过程包括DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求、服务器响应、浏览器渲染等环节。在这篇文章中&#xff0c;我们将深入探讨这些步骤&#xff0c;并解释它们在…

Windows Server 2025 Azure Arc 介绍

Azure Arc 是一个扩展 Azure 平台的桥梁&#xff0c;可帮助你构建可灵活地跨数据中心、边缘和多云环境运行的应用程序和服务。使用一致的开发、操作和安全模型来开发云原生应用程序。 Azure Arc 可在新的和现有的硬件、虚拟化和 Kubernetes 平台、物联网设备和集成系统上运行。…