Python爬取房天下网站深圳房租信息入库并进行数据分析可视化

赶集网租房信息 一、爬虫–scrapy 1.搭建环境 代码如下(示例): import scrapy import numpy as np import pandas as pd import matplotlib.pyplot as plt 2.加载scrapy框架 代码如下(示例): # terminal 终端实现 cd .. # 跳转到上一层目录 scrapy startproject booktop # 和项目同名的scrapy框架项目 3. setting配置 代码如下(示例): ROBOTSTXT_OB 阅读详情

概述

  • 请求库:requests
  • HTML 解析:BeautifulSoup
  • 词云:wordcloud
  • 数据可视化:pyecharts
  • 数据库:MongoDB
  • 数据库连接:pymongo

爬虫思路&&页面解析

先爬取房某下深圳各个板块的数据,然后存进 MongoDB 数据库,最后再进行数据分析。 

右键网页,查看页面源码,找出我们要爬取得部分

爬虫源代码实现

import requests
from bs4 import BeautifulSoup
import time
from pymongo import MongoClient

class HouseSpider:
    def __init__(self):
        self.client = MongoClient('mongodb://localhost:27017/')
        self.zfdb = self.client.zfdb

    session = requests.Session()
    baseUrl = "http://sz.zu.fang.com"

    # 每个区域的url
    urlDir = {
        "不限": "/house/",
        "宝安": "/house-a089/",
        "龙岗": "/house-a090/",
        "南山": "/house-a087/",
        "福田": "/house-a085/",
        "罗湖": "/house-a086/",
        "盐田": "/house-a088/",
        "龙华区": "/house-a013080/",
        "坪山区": "/house-a013081/",
        "光明新区": "/house-a013079/",
        "大鹏新区": "/house-a013082/",
        "惠州": "/house-a013058/",
        "东莞": "/house-a013057/",
        "深圳周边": "/house-a016375/",
    }

    region = "不限"
    page = 100
    # 通过名字获取 url 地址
    def getRegionUrl(self, name="宝安", page=10):
        urlList = []
        for index in range(page):
            if index == 0:
                urlList.append(self.baseUrl + self.urlDir[name])
            else:
                urlList.append(self.baseUrl + self.urlDir[name] + "i3" + str(index + 1) + "/")
        return urlList


    # MongoDB 存储数据结构
    def getRentMsg(self, title, rooms, area, price, address, traffic, region, direction):
        return {
            "title": title,  # 标题
            "rooms": rooms,  # 房间数
            "area": area,  # 平方数
            "price": price,  # 价格
            "address": address,  # 地址
            "traffic": traffic,  # 交通描述
            "region": region,  # 区、(福田区、南山区)
            "direction": direction,  # 房子朝向(朝南、朝南北)
        }

    # 获取数据库 collection
    def getCollection(self, name):
        zfdb = self.zfdb
        if name == "不限":
            return zfdb.rent
        if name == "宝安":
            return zfdb.baoan
        if name == "龙岗":
            return zfdb.longgang
        if name == "南山":
            return zfdb.nanshan
        if name == "福田":
            return zfdb.futian
        if name == "罗湖":
            return zfdb.luohu
        if name == "盐田":
            return zfdb.yantian
        if name == "龙华区":
            return zfdb.longhuaqu
        if name == "坪山区":
            return zfdb.pingshanqu
        if name == "光明新区":
            return zfdb.guangmingxinqu
        if name == "大鹏新区":
            return zfdb.dapengxinqu

    #
    def getAreaList(self):
        return ["不限","宝安","龙岗","南山","福田","罗湖","盐田","龙华区","坪山区","光明新区","大鹏新区",]

    def getOnePageData(self, pageUrl, reginon="不限"):
        rent = self.getCollection(self.region)
        self.session.headers.update({
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.
python爬虫实例方法(批量爬取网页信息基础代码) 文章目录前言一、爬虫实例0.爬取深圳租房信息1.爬取深圳算法岗位信息2.爬取猫图片(基于 selenium库 模拟人自动点击)3.爬取小说纳兰无敌并生成词云二、用到的库1.正则表达式 re 库2.BeautifulSoup 库3.request库三、其他内容1、常用网址2、重要点3、爬虫三大步骤4、关于python的快速安装 前言 8月31日爬虫笔记汇总,有不明白的欢迎提问交流。 #如有不当之处欢迎大佬指正# 提示:以下是本篇文章正文内容,下面案例可供参考 一、爬虫实例 0.爬取深圳租房信息 流程分析. 阅读详情

相关推荐

基于DPLL算法解决3-SAT问题(C++实现)

近日看到一个3-SAT问题(Boolean SATisfiability Problem, 布尔逻辑可满足性问题),试着写了个算法求解。

qq_63241496的博客 2215

高频面试题-项目介绍篇

聊聊如何介绍项目经历。

m0_73359763的博客 1908

ArcGIS | 全球新冠肺炎地图数据下载和处理

ArcGIS

thinkpang的博客 2900

英伟达笔试1

本文摘要: 使用NAND2门设计4位奇偶校验发生器,通过15个NAND2门实现4输入异或功能,分三级结构完成奇校验计算。 时序分析公式总结: 建立时间约束:T_cq + T_comb(max) + T_setup + T_skew ≤ T_clk 保持时间约束:T_cq + T_comb(min) + T_skew ≥ T_hold 提供了两段路径的具体时序检查公式和建立违规修复方法 分析32位粘滞累积寄存器Verilog代码: 功能:记录输入数据中出现过的所有1位 每个bit独立实现,复位清零,有效输入时

soulermax的博客 165

STM32_USB复合设备开发实战:基于CubeMX插件简化HID与CDC集成

本文详细介绍了如何使用STM32CubeMX插件简化USB复合设备开发,特别是HID与CDC的集成。通过自动处理多设备描述符融合和端点资源分配,该插件显著降低了开发复杂度,帮助工程师快速实现键盘、鼠标和虚拟串口等复合功能,提升STM32 USB开发效率。

palm99的专栏 748

Notion卡顿救星:3分钟搞定DNS优化,手机电脑全平台加速指南

本文针对Notion访问慢和卡顿问题,提供了全平台DNS优化与Hosts文件修改的详细指南。通过更换优质DNS服务器或建立静态IP映射,可有效解决因网络延迟和域名解析导致的加载缓慢,实现手机与电脑端的快速加速,提升Notion使用流畅度。

v6b7n8m9q0的博客 1306

直流母线电压采集与缓冲调理电路

本文介绍了一种直流母线电压采集与缓冲调理电路的设计与应用。该电路通过电阻分压网络将高压直流母线电压降至适合ADC采样的范围,并采用运放电压跟随器实现高输入阻抗和低输出阻抗的缓冲功能,有效提高采样精度和抗干扰能力。文章重点阐述了低输出阻抗对驱动负载、抗干扰和电压稳定的重要性,并列举了该电路在工业电源监测、电动汽车BMS、通信电源和储能系统等领域的典型应用场景。

qq_37999850的博客 317

2026年VIVO嵌入式岗位高频面试题(含参考答案)

摘要:VIVO嵌入式岗位考核涵盖智能手机、IoT设备、芯片适配等方向,重点考察硬件底层交互、RTOS/Linux开发、C/C++功底与问题排查能力。题目按优先级排序,分硬件架构、RTOS、C/C++、数据结构、Linux实践、行业认知6大模块,共40道题。硬件部分涉及中断、ARM架构、加速技术、BSP开发等;RTOS部分区分硬/软实时系统;C/C++部分侧重内存管理、位操作;Linux部分考察常用命令;行业部分关注鸿蒙等系统理念。题目设计贴合实际工作场景,全面评估嵌入式开发能力。

Open 52

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Django实例 —— 搭建一个博客(超详细)
下一篇: 浅谈uWSGI, uwsgi, WSGI 的区别
爱做呢!~
博客等级 码龄10年 88粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值