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

摘 要

网络爬虫也叫做网络机器人,是一种按照一定的规则,自动地抓取网络信息,进行数据信息的采集与整理的程序或者脚本。随着海量数据的出现,如何快速有效的获取到我们想要的数据成为难题。以房源信息为例,该文使用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.mzph.cn/news/659831.shtml

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

相关文章

做虾皮Shopee想高效发货?EasyBoss ERP的这个功能你不能错过!

随着业务的发展,许多Shopee、Lazada卖家的店铺订单量逐渐增大、仓库商品的SKU也越来越多。在这种情况下,一些卖家会选择采用人海战术来提高拣货、发货的效率。效率提高的同时,也意味着企业的用人成本的增加! 那么,如何…

在windows和Linux中的安装 boost 以及 安装 muduo

二、安装boost boost官网:boost官网 我下载的boost版本: windows:boost_1_84_0.ziplinux:boost_1_84_0.tar.gz 2.1 在windows中安装boost和测试 (1)在windows中,解压这个压缩包boost_1_84_0.zip,路径为…

【力扣经典面试题】189. 轮转数组

题目描述: 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 …

免费的ppt网站分享

前言 相信大学生们深有体会,对于学校而言,好像是任何活动都需要我们做ppt,当你拿着自己辛苦做的ppt去展示现场的时候,你看到别人的ppt比你的还好,此时心情就是毙,当你知道人家不过是仅仅的1个小时不到就完成…

Java编程练习之类的封装

1.把一个Student类封装起来,模拟一个转校生转入新学校后为其制作学生信息的过程。运行结果如下: package zhtestdemo; import java.util.Scanner; import java.text.DecimalFormat; public class demo { //创建类,类名叫demo; private Stud…

使用阿里云的IDaaS实现知行之桥EDI系统的单点登录

,在开始测试之前,需要确定用哪个信息作为“登陆用户的ID字段”。 这个字段用来在完成SSO登陆之后,用哪个信息将阿里云IDaaS的用户和知行之桥EDI系统的用户做对应。这里我们使用了 phonenumber 这个自定义属性。需要在阿里云做如下配置&#x…

c++阶梯之引用与内联函数

1. 引用 1.1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 语法 类型& 引用变量名(对象名) 引用实体; 示例 很显然,在下面这…

stm32--simulink开发之--timer的学习,硬件输入中断,触发事件

总体的参考链接是: https://ww2.mathworks.cn/help/ecoder/stmicroelectronicsstm32f4discovery/ref/timer.html 输入: 1,配置项:Enable frequency input 缩写:freq conunt 说明:“freq count — Frequency…

2024热门游泳耳机排行榜,精选四款游泳耳机品牌

在追求健康生活的今天,游泳成为了许多人健身的首选活动之一。而为了让游泳体验更加愉悦,选择一款适合的游泳耳机显得尤为重要。这不仅能够为游泳者提供动感的音乐,缓解游泳过程中的疲劳感,同时还有助于提高游泳效率。在市场上琳琅…

中文计算机自学指南:打开全栈开发之门 | 开源日报 No.161

PKUFlyingPig/cs-self-learning Stars: 40.3k License: MIT cs-self-learning 是一个计算机自学指南。 该项目旨在提供一本完整的计算机自学指南,帮助初学者通过优质资源快速成长为全能程序员。 主要功能和核心优势包括: 提供丰富的开源课程资源支持多…

案例三:U盘提示格式化?3种方法帮你拯救它

在U盘的使用过程中最尴尬的情况就是遇到“无法打开,需要进行格式化”的提示。此时,我们如何才能在不破坏内部数据的情况下,挽救这个U盘呢? 小编今天就和说3个方法,可以用来解决U盘“无法打开,需要进行格式化…

工作流框架Activiti

工作流框架activiti 实现入住管理,审批流。 实现入退住,涉及多个表单的提交和多个角色的审核,若要实现这些流程的开发,最好的技术选型是使用工作流技术。 工作流(Work Flow):是一项将系统任务或操作抽取&#xff0c…

Windows10更新失败 错误 0x80070643、KB5034441的解决方法之二

Windows10更新失败 错误 0x80070643、KB5034441 在知乎Windows10更新失败 错误 0x80070643、KB5034441的原因分析和几个解决方法 - 知乎 参考文章进行操作,更详细信息自己看上面链接。 我电脑的硬盘是mbr格式,而且没有划分恢复分区。 Microsoft Windo…

nop-entropy可逆计算入门(1)

第1步:从大佬的gitee:https://gitee.com/canonical-entropy/nop-entropy下载源码,进行本地编译,具体编译看项目下的readme,想偷懒的可以下载我编译后的jar,放到自己的maven仓库 https://pan.baidu.com/s/15qANnrCh5RV…

Node.js的学习1

Node.js简介 浏览器是JavaScript的前端运行环境Node.js是JavaScript的后端运行环境Node.js中无法调用DOM和BOM等浏览器内置API 终端中的快捷键 使用向上箭头,可以快速定位到上一次执行的命令使用tab键,可以快速补全路径使用esc键,可以快速清…

Sentinel 知识总结

Sentinel 知识总结 Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系…

学习使用vite+vue3的所遇问题总结

组件中使用<script>标签忘记加 setup 这会导致Navbar 没有暴露出来&#xff0c;导致使用不了&#xff0c;出现以下报错 这是因为&#xff0c;如果不用setup&#xff0c;就得使用 export default …… setup 是后者的语法糖 在Vue.js中&#xff0c;你可以通过route对象…

USTC ICS(2023Fall) Lab5 Password Verification

LC-3汇编语言 .orig x3000 LOOP1 AND R1,R1,#0ADD R1,R1,#3LEA R0, string1PUTS ;打印string1AND R0,R0,#0ADD R0, R0, #10 OUT ;打印换行符GETCOUT;检查输入的字符是否为W(ASCII码为87)ADD R0,R0,#-16ADD R0,R0,#-16ADD R0,R0,#-16ADD R…

H5网站在线客服小程序源码系统,完全开源可二开 带完整的安装代码包以及搭建教程

互联网的快速发展&#xff0c;H5网站已成为企业与客户沟通的重要渠道。然而&#xff0c;许多H5网站在客户服务方面存在不足&#xff0c;无法及时响应客户的问题和需求。小编给大家分享了一款H5网站在线客服小程序源码系统&#xff0c;旨在为企业提供完善的客户服务解决方案。 …

(自用)learnOpenGL学习总结-高级OpenGL-几何着色器

在顶点着色器和片段着色器中间还有一个几何着色器。 几何着色器的输入是一个图元的一组顶点&#xff0c;在几何着色器中进行任意变换之后再给片段着色器&#xff0c;可以变成完全不一样的图元、可以生成更多的顶点。 #version 330 core layout (points) in; layout (line_str…