【大作业之爬虫实战+数据分析与可视化处理上】——案例——如桃花来

news2024/11/17 23:52:41

目的任务:

目的任务 爬取租房网对应元素:

    1. 租房名
    1. 每月的价格
    1. 室内规格构造
    1. 房间大小
    1. 交通信息
    1. 保存数据到excel表格中
    1. 做数据清洗
    1. 数据可视化呈现

设计要求:

设计要求:

  1. 以类的方式书写,简洁明了。能够促进学生对于python程序的理解,和结构化的构造。提高代码的可读性和复用性。
  2. 利用selenium自动化程序进行爬取信息,便于体会pythoon代码简洁优雅的特点。
  3. 对excel中的数据进行美化和可视化报表,提高展示的友好性

代码演示:

我们将代码进行分段讲解,便于理解。

1.导包:

import time
import random
from selenium import webdriver #驱动浏览器
from selenium.webdriver.common.by import By #选择器,用于选择
from selenium.webdriver.common.keys import Keys #按键,起到鼠标点击的作用
from selenium.webdriver.support import expected_conditions as EC #等待所有标签加载完毕
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载完毕,寻找某些元素
from openpyxl import workbook #插入excel模块

2. 创建excel的工作表:

#实例化一个excel对象
wb = workbook.Workbook()
#激活当前表
wt = wb.active
#设置表头,以列表形式传参
wt.append(["租房类型","租房名称","租房价格","交通环境","室内大小","室内构造"])

3.用类去书写:

class Spdier(object):
    def __init__(self):
        #启动浏览器
        self.driver = webdriver.Chrome()
        #起始地址
        self.start_url = "https://bj.58.com/chuzu/"

    def get_data(self):
        #发出请求
        self.driver.get(self.start_url)
        time.sleep(2)
        #租房名称和租房类型
        house_names = self.driver.find_elements(By.XPATH,'//div[@class="des"]/h2/a')
        #月租价格
        house_prices = self.driver.find_elements(By.XPATH,'//div[@class="money"]/b')
        #交通环境
        house_traffics = self.driver.find_elements(By.XPATH,'//div[@class="des"]/p[@class="infor"]')
        #房间大小和室内规格构造
        house_areas = self.driver.find_elements(By.XPATH,'//div[@class="des"]/p[@class="room"]')
        flag = 0
        for house_name,house_price,house_traffic,house_area in zip(house_names,house_prices,house_traffics,house_areas):
            house_name_text = house_name.text
            #保存用的租房类型
            t_house_type = house_name_text.split("|")[0]

            try:
                #保存用的租房名
                t_house_name = house_name_text.split("|")[1]
            except:
                t_house_name = house_name_text
            #保存用的租房价格
            t_house_price = house_price.text

            #保存用的交通环境
            t_house_traffic = house_traffic.text

            # 保存用的房间大小
            house_area_text = house_area.text
            t_house_area = house_area_text.split(" ")[-1]
            #保存用的房间构造
            t_house_consist = house_area_text.split(" ")[0]
            #执行保存函数
            self.save_data(t_house_type,t_house_name,t_house_price,t_house_traffic,t_house_area,t_house_consist)

    def save_data(self,t_house_type,t_house_name,t_house_price,t_house_traffic,t_house_area,t_house_consist):
        wt_list = [t_house_type,t_house_name,t_house_price,t_house_traffic,t_house_area,t_house_consist]
        wt.append(wt_list)
        wb.save("租房网情况.xlsx")

    #翻页函数
    def page_through(self):
        for i in range(20):
            self.get_data()
            time.sleep(random.randint(2,4))
            #点击翻页按钮
            text_click =self.driver.find_element(By.XPATH,'//*[@id="pager_wrap"]/div/a[4]').click()

        

    def run(self):
        self.page_through()


if __name__ == '__main__':
    zufang = Spdier()
    zufang.run()

对excel表格进行相关处理:

原始数据:

在这里插入图片描述

信息非常杂乱,而且有很多脏数据和存在规律不整齐的问题。我们需要进行数据清洗,将数据尽可能的转化为数字。

几个关键快捷键:

  • 1.ctrl +g定位
  • 2.ctrl+h查找和替换

数据清洗之后:

运用方式:
	1.冻结首项,保证下滑数据依旧可以看到数据表头
	2.开始>>>条件格式,对表格进行美化

租房类型中1表示整租,0表示单间

在这里插入图片描述

对excel做了一点简单的操作是不是清楚多了?接下来就是数据透视表和可视化的操作了,我们请移步本文下册

tips:
若是想了解excel关于数据可视化的处理,可以关注一下,后面会详细更新excel对于数据可视化的使用

在这里插入图片描述

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

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

相关文章

技术分享 | App常见bug解析

【摘要】 功能Bug内容显示错误前端页面展示的内容有误。这种错误的产生有两种可能1、前端代码写的文案错误2、接口返回值错误功能错误功能错误是在测试过程中最常见的类型之一,也就是产品的功能没有实现。比如图中的公众号登录不成功的问题。界面展示错乱产品界面上…

海睿思分享 | 摆脱数据质量低下困扰,这个方法简单有效!

2019年五月,某企业数据服务平台推送了运营花呗的蚂蚁小微小额贷款有限公司进入清算程序。 究其原因,该数据服务平台抓取了不真实且不完整的数据,导致生成的数据质量低,信息不真实、存在法律合规风险等情况。 由于支付宝和花呗的…

飞浆AI studio人工智能课程学习(4)-优质Prompt分享

文章目录 最具商业价值Prompt分享与颁奖02最具商业价值Prompt分享与颁奖-Top102最具商业价值Prompt分享与颁奖-Top202最具商业价值Prompt分享与颁奖-Top302最具商业价值Prompt分享与颁奖-Top402最具商业价值Prompt分享与颁奖-Top502最具商业价值Prompt分享与颁奖-Top602最具商业…

数字化艺术时代的新趋势:虚拟数字展厅的崛起

引言: 艺术与技术的融合正带领我们进入一个全新的数字化艺术时代。在这个时代中,虚拟数字展厅正在以惊人的速度崛起,并引领着展览的新趋势。 一.虚拟数字展厅的定义和特点 虚拟数字展厅是一种基于虚拟现实和全景技术的数字化艺术…

经典的设计模式——UML类图的一些规范

文章目录 一、类的表示二、接口的表示三、继承的表示四、接口实现的表示五、关联关系六、聚合关系七、合成关系八、依赖关系 一、类的表示 矩形框第一层表示名称,如果是抽象类,则用斜 体表示 第二层是属性 第三层是方法 号表示公有,-表示私有…

dll修复都有哪些方法?详细解析各种dll修复方法

DLL(动态链接库)是 Windows 操作系统中的一种重要文件,它包含了许多程序所需的函数和资源。因此,当 DLL 文件出现问题时,可能会导致程序无法正常运行,甚至整个系统崩溃。这时候需要使用 DLL 修复工具进行修…

Excel集成GPT,惊呆我了

Excel&GPT 从最开始的GPT对话,到后面的Office集成GPT进行内测,用GPT实现写Word、做Excel、做PPT(别着急,后面我会分享AIPPT)已经不再是设想,而在逐步演变成真的! 当然,目前国内…

Vivado下时序逻辑模块的仿真

文章目录 D触发器两级D触发器带异步复位的D触发器带异步复位和同步置数的D触发器移位寄存器单口RAM伪双口RAM真双口RAM单口ROM 组合逻辑电路在逻辑功能上特点是任意时刻的输出仅仅取决于当前时刻的输入,与电路原来的状态无关。 时序逻辑在逻辑功能上的特点是任意时刻…

从0到1:如何建立一个大规模多语言代码生成预训练模型

国产AI辅助编程工具CodeGeeX是一个使用AI大模型为基座的辅助编程工具,帮助开发人员更快的编写代码。可以自动完成整个函数的编写,只需要根据注释或Tab按键即可。它已经在Java、JavaScript和Python等二十多种语言上进行了训练,并基于大量公开的…

【Python】打包与发布(Packaging and distributing projects)

以Unix/macOS系统为例。 前提准备:确保pip为最新版本,可使用以下命令来更新pip: python3 -m pip install --upgrade pip一、创建一个简单的项目 我们在目录packaging_tutorial下进行操作。 项目名称为:example_package_wayne。 …

【yolov5系列】yolov5目标检测的原理梳理+核心代码解析

打算写yolov5源码阅读和总结&#xff0c;已经打算了一年&#xff0c;如今已经更新到yolov8&#xff0c;只能说自己行动太慢了&#xff0c;哭泣(๑>؂<๑&#xff09;。趁着看要yolov8一起赶紧把yolov5总结总结。 一、Yolov5的网络结构 模型主要分为3部分 backbone&#x…

Maven 打包插件 maven-jar-plugin

文章目录 指定版本生成可执行 Jar准备依赖&#xff0c;并指定依赖位置自动下载依赖的 Jar 文件 打包时排除文件与其他常用打包插件比较 本文是对 maven-jar-plugin 常用配置的介绍&#xff0c;更详细的学习请参照 Apache Maven JAR Plugin 官方文档 这是 maven 生命周期 packa…

Python+Pytest+Allure+Git+Jenkins数据驱动接口自动化测试框架

一、接口基础   接口测试是对系统和组件之间的接口进行测试&#xff0c;主要是效验数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及相互逻辑依赖关系。其中接口协议分为HTTP&#xff0c;RPC&#xff0c;Webservice&#xff0c;Dubbo&#xff0c;RESTful等类型。 …

实用工具 | 语音文本对齐MFA的安装及使用

Montreal Forced Aligner&#xff08;MFA&#xff09;[1]是一个用于将音频和文本进行对齐的工具。它可以用于语音识别、语音合成和发音研究等领域。MFA支持多种语言和语音&#xff0c;用户可以根据需要自定义训练模型。 本博客介绍如何使用MFA对音频和文本进行对齐&#xff0c…

计算机网络实验:交换机划分Vlan配置

目录 前言实验目的实验内容实验过程总结 前言 计算机网络是当代信息技术的重要组成部分&#xff0c;也是现代社会的基础设施之一。为了提高计算机网络的性能和安全性&#xff0c;网络管理员需要对网络进行合理的规划和设计&#xff0c;包括对网络拓扑、地址分配、路由协议、交…

TP-LINK XDR6078 WiFi6路由器 简单开箱评测

TL-XDR6078易展版AX6000双频WiFi6路由器 简单开箱测评&#xff0c;新房快装修好了&#xff0c;先装上WiFi&#xff0c;挑了一会选中这个了&#xff0c;双2.5G电口&#xff0c;6000Mbps无线速率&#xff0c;还支持端口汇聚等等功能&#xff0c;感觉还不错。 TP-LINK XDR3040 Wi…

R语言 tidyverse系列学习笔记(系列2)表格的处理

创建一个得分表 score install.packages("dplyr") library(dplyr)install.packages("tibble") library(tibble)install.packages("stringr") library(stringr)score tibble(IDc("1222-1","2001-0","3321-1",&qu…

从JMeter Cookie管理器开始,轻松掌握接口测试技能!

目录 【前言】 【1. 添加Cookie管理器】 【2. 登录接口获取Cookie】 【3. Cookie关联】 【4. 动态修改Cookie值】 【结论】 【附录】 【前言】 在接口测试中&#xff0c;我们经常需要对Cookie进行处理和关联&#xff0c;来模拟用户在浏览器中的操作。特别是在登录和权限…

chatgpt赋能python:Python名字的由来

Python名字的由来 Python是一门高级编程语言&#xff0c;它的名字来源于一个非常有趣的故事。接下来的文章将介绍如何命名Python&#xff0c;并且揭示这个名字的真正含义。 Guido van Rossum设计Python Python是由Guido van Rossum设计的。在1989年&#xff0c;Guido在荷兰国…

用Flask-Login库和阿里云短信推送服务实现网站注册登录功能

诸神缄默不语-个人CSDN博文目录 本文介绍如何用Flask-Login库和阿里云短信推送服务实现网站注册登录功能。 大致逻辑是在注册和找回密码时调用阿里云短信服务&#xff0c;登录时使用手机号密码登录&#xff08;别的安全功能还没有加&#xff09;。 很多代码都是直接由ChatGP…