爬取深圳2024年链家二手房数据,共3000条数据(其他城市也可)

在这里插入图片描述

文章目录

  • 专栏导读
  • 1.目标
  • 2.导入相关库
  • 3.获取每个二手房的链接
  • 4.获取每个链接中的相关数据
  • 5.保存数据
  • 6.数据展示

专栏导读

✍ 作者简介:i阿极,CSDN 数据分析领域优质创作者,专注于分享python数据分析领域知识。

本文录入于《python网络爬虫实战教学》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
订阅后,可以阅读《python网络爬虫实战教学》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》

😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍

1.目标

爬取深圳2024年链家二手房数据,内容有

title,area,community,position,total_price,unit_price,hourseType,hourseSize,direction,fitment
此房满三年,高楼层南向视野无遮挡,毛坯原始户型三房,宝安区,博林君瑞,沙井,420,47033 ,3室2厅,89.3平米,东南,毛坯

数据量为3000条,为数据分析、机器学习、毕设做数据支撑。

2.导入相关库

import csv
from bs4 import BeautifulSoup
import requests

csv 是 Python 的一个标准库,用于读写 CSV(逗号分隔值)文件。CSV 是一种常见的文件格式,用于存储表格数据(如电子表格或数据库)。
BeautifulSoup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。它通常与像 lxml 或 html.parser 这样的解析器一起使用。
requests 是一个 Python 库,用于发送 HTTP 请求。它使发送 HTTP 请求(如 GET、POST 等)变得简单。

3.获取每个二手房的链接

for i in range(1,101):
    url = f'https://sz.lianjia.com/ershoufang/pg{i}rs%E6%B7%B1%E5%9C%B3/'
    headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
        }
    data = requests.get(url=url, headers=headers).text
    soup = BeautifulSoup(data,'lxml')
    a_tags = soup.find_all('a', class_='noresultRecommend')
    for a_tag in a_tags:
        href = a_tag.get('href')
        href_list.append(href)

代码解释:

循环遍历页面:通过修改URL中的页码参数(pg{i}),代码循环遍历从第一页到第一百页(包含第一页,不包含第一百零一页)的页面。
模拟浏览器行为:通过设置HTTP请求头中的User-Agent字段,代码模拟了来自一个真实浏览器的请求,以避免被网站识别为爬虫。
发送HTTP GET请求:使用requests.get()方法向每个页面发送HTTP GET请求,并获取响应的文本内容。
解析HTML:使用BeautifulSoup库和’lxml’解析器解析响应的HTML内容,以便进一步提取数据。
查找特定链接:通过调用find_all()方法,代码查找所有具有类名’noresultRecommend’的 < a > 标签(链接)。
存储链接:遍历找到的链接,提取它们的href属性(即链接地址),并将这些地址添加到一个名为href_list的列表中。注意,在实际运行代码之前,需要确保已经定义了href_list列表。

4.获取每个链接中的相关数据

for j in range(len(href_list)):
    try:
        print(href_list[j])
        headers = {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
                }
        data = requests.get(url=href_list[j], headers=headers).text
        soup = BeautifulSoup(data,'lxml')
        #title
        title_h1 = soup.find('h1',class_='main')
        for titles in title_h1:
            title = titles
        #area
        area_span = soup.find('span',class_='info')
        area_a = area_span.find('a').text


        for position_a in area_span.find_all('a')[-1]:
            position = position_a
        #community
        community = soup.find('a',class_='info').text

        #total_price
        try:
            total_price_div = soup.find('div',class_='price')
            for total_price_span in total_price_div.find('span',class_='total'):
                total_price = total_price_span
        except:
            total_price = None

        # unit_price
        try:
            unit_price_span = soup.find('span',class_='unitPriceValue')
            unit_price = unit_price_span.get_text(strip=True, separator=" ")[:-4]
        except:
            unit_price = None
        #hourseType
        hourseType = soup.find('div',class_='mainInfo').text

        #hourseSize
        hourseSize_div = soup.find('div',class_='area')
        for hourseSize_divs in hourseSize_div.find('div',class_='mainInfo'):
            hourseSize = hourseSize_divs

        #direction
        direction_div = soup.find('div',class_='type')
        for direction_divs in direction_div.find('div',class_='mainInfo'):
            direction = direction_divs
        #fitment
        fitment_div = soup.find('div',class_='type')
        for fitment_divs in fitment_div.find('div',class_='subInfo'):
            fitment = fitment_divs[-2:]

代码解释:

对列表href_list循环,获取列表里的链接,爬取需要的内容:
title,area,community,position,total_price,unit_price,hourseType,hourseSize,direction,fitment
此房满三年,高楼层南向视野无遮挡,毛坯原始户型三房,宝安区,博林君瑞,沙井,420,47033 ,3室2厅,89.3平米,东南,毛坯

5.保存数据

with open('深圳2024年链家二手房信息_1.csv', mode='w', newline='', encoding='utf-8') as csv_file:
    fieldnames = [
        'title', 'area', 'community', 'position', 'total_price',
        'unit_price', 'hourseType', 'hourseSize', 'direction', 'fitment'
    ]
    writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
    writer.writeheader()

代码解释:

这段代码的主要目的是创建一个新的 CSV 文件(或覆盖现有的同名文件),并写入一个包含多个字段名的表头。这些字段名定义了 CSV 文件中将要包含的列。接下来,你可以使用 writer.writerow(dict_row) 方法来向 CSV 文件中写入包含这些字段的字典数据行。

6.数据展示

在这里插入图片描述

如果需要数据集或源码(每个代码详解)可在博主首页的“资源”下载。
挣点小外快:需要其他城市的数据集可联系博主

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

探索数据结构

什么是数据结构 数据结构是由&#xff1a;“数据”与“结构”两部分组成 数据与结构 数据&#xff1a;如我们所看见的广告、图片、视频等&#xff0c;常见的数值&#xff0c;教务系统里的&#xff08;姓名、性别、学号、学历等等&#xff09;&#xff1b; 结构&#xff1a;当…

Pandas进阶

文章目录 第1关&#xff1a;Pandas 分组聚合第2关&#xff1a;Pandas 创建透视表和交叉表 第1关&#xff1a;Pandas 分组聚合 编程要求 使用 Pandas 中的 read_csv() 函数读取 step1/drinks.csv 中的数据&#xff0c;数据的列名如下表所示&#xff0c;请根据 continent 分组并…

VMware 虚拟机自定义规范 - 更优雅的虚拟机开局

介绍 虚拟机自定义规范可以在你克隆虚拟机的时候在vCenter 的Web界面设定虚拟机的主机名、单/多网卡IP的IP和网关、DNS服务器、唯一标识符重置&#xff08;SID等&#xff09;、硬盘分区自动扩容、设定密码、密钥、时区等信息。 让管理员不需要进入虚拟机系统内部进行配置&…

10000字讲解IoC 思想以及五大注解

文章目录 IoC 思想通过案例讲解 IoC1.传统的开发方式 SpringIoC 和 DI五大注解ControllerServiceComponentRepositoryConfiguration 为什么要有这么多的类注解类注解之间的关系方法注解 Bean重命名 bean扫描路径 IoC 思想 什么是 Spring 呢&#xff1f; 我们经常听到的都是说…

Android 13 aosp 默认关闭SELinux

通过adb修改 adb root adb shell setenforce 0 // 开SELinux&#xff0c;设置成模式permissive adb shell setenforce 1 // 关SELinux&#xff0c;设置成模式enforce adb shell getenforce // 获取当前SELinux状态源码修改 Android_source/system/core/init/selinu…

JS-导入导出

export和export default是ES6中导出模块中变量的语法 导入导出变量 //导出方法&#xff08;js文件中&#xff09; export const 变量名值//导入方法 对应导入的变量&#xff0c;一定要加花括号 import {变量名} from js文件路径 导入导出函数 //导出方法&#xff08;js文件中…

2024.1IDEA 到2026年

链接&#xff1a;https://pan.baidu.com/s/1hjJEV5A5k1Z9JbPyBXywSw?pwd9g4i 提取码&#xff1a;9g4i解压之后,按照 操作说明.txt 操作; IntelliJ IDEA 2024.1 (Ultimate Edition) Build #IU-241.14494.240, built on March 28, 2024 Licensed to gurgles tumbles You have…

福汇美股开户教程

福汇作为全球知名的外汇交易平台&#xff0c;也提供美股交易服务。在福汇交易美股&#xff0c;首先需要开立一个福汇账户。本教程将详细介绍福汇美股开户流程。 第一步&#xff1a;访问福汇官网并填写开户表格 访问福汇美股入口点击页面顶部的“开户”按钮。选择您的国籍&…

JetsonNano —— Windows下对Nano板卡烧录刷机(官方教程)

介绍 NVIDIA Jetson Nano™ 开发者套件是一款面向创客、学习者和开发人员的小型 AI 计算机。按照这个简短的指南&#xff0c;你就可以开始构建实用的 AI 应用程序、酷炫的 AI 机器人等了。 烧录刷机 1、下载 Jetson Nano开发者套件SD卡映像&#xff0c;并记下它在计算机上的保存…

初探MFC程序混合使用QT

一、背景 随着操作系统国产化替代的趋势越发明显&#xff0c;软件支持国际化、跨平台&#xff0c;已然是必须做的一件事情。原有的软件UI层用的是MFC&#xff0c;将其换成QT&#xff0c;想必是一种较好的方案。对于大型软件&#xff0c;特别是已发布&#xff0c;但还处于不断迭…

vue 开发环境的搭建

一、整个流程&#xff1a; 安装nodejs >> 安装vue >> 安装vue-cli >> 初始化 webpack(生成代码) >> 安装依赖 >> 运行vue程序 二、详细安装流程&#xff1a; 1.安装nodejs 下载&#xff1a;https://nodejs.org/dist/v12.18.3/node-v12.18.3-x…

《米小圈上学记》|快乐读书,从身边的人身边的事开始!

时间&#xff0c;抓住了就是黄金&#xff0c;虚度了就是流水;书&#xff0c;看了就是学问&#xff0c;没看就是废纸:抱负&#xff0c;努力了才叫幻想&#xff0c;放弃了那只是妄想。读书&#xff0c;不一定能转变命运&#xff0c;但肯定能让我们安静&#xff0c;安静本身就是一…

【触摸案例-手势解锁案例-连线到按钮 Objective-C语言】

一、接下来,我们接着来说这个,连线的问题啊, 1.连线的问题啊,也就是说,我现在点击一个按钮, 在移动到下一个按钮的时候,在两个按钮中间,在两个按钮都亮起来的时候呢,我们肯定是让它去画一条线的,那么, 1)首先,如果我现在从第一个按钮,连到第二个按钮,那么,这条…

二叉树的实现(详解,数据结构)

目录 一&#xff0c;二叉树需要实现的功能 二&#xff0c;下面是各功能详解 0.思想&#xff1a; 1.创建二叉树结点&#xff1a; 2.通过前序遍历的数组"ABD##E#H##CF##G##"构建二叉树 3.二叉树销毁&#xff1a; 4.前序遍历&#xff1a; 5.中序遍历&#xff1a;…

小红书「打工人」生存现状实录

近年来&#xff0c;“打工人”一词频繁出现在内容场景中。调研小红书数据显示&#xff0c;近一年“打工人、职场”相关笔记声量增长440%&#xff0c;预估互动总量增长128%&#xff0c;热度高涨。 职场年轻人正披着“打工人”的外壳&#xff0c;不断自嘲中寻求身份认同。基于此&…

各种流量包特征

[CVE-2013-1966] Apache Struts2 远程命令执行漏洞 要执行的命令在exec里面&#xff0c;而且回显数据包里面有明显执行结果回显 [CVE-2017-8046] Spring Data Rest 远程命令执行漏洞 回显不明显&#xff0c;考试提供的解码工具不能解密&#xff0c; [CVE-2017-12149] JBOSS…

java多线程编码应用1——java多线程CompletableFuture使用技巧

在实际项目开发过程中&#xff0c;大部分程序的执行顺序都是按照代码编写的先后顺序&#xff0c;依次从上往下挨个执行的&#xff0c;但是对于统计或者批量操作数据时&#xff0c;是否有更好的方案呢&#xff1f;这时候就可以考虑使用多线程编程&#xff0c;异步并行执行多个任…

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动改的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应代…

投资线上黄金是否属于外汇交易?探究黄金与外汇市场的关系

在金融市场中&#xff0c;线上黄金投资和外汇交易都是备受关注的领域。许多人可能会混淆这两者&#xff0c;认为投资线上黄金也是一种外汇交易。但实际上&#xff0c;尽管线上黄金和外汇交易有一些相似之处&#xff0c;但它们在本质上是不同的投资领域。本文将探讨投资线上黄金…

前端 Android App 上架详细流程 (Android App)

1、准备上架所需要的材料 先在需要上架的官方网站注册账号。提前把手机号&#xff0c;名字&#xff0c;身份证等等材料准备好&#xff0c;完成开发者实名认证&#xff1b;软著是必要的&#xff0c;提前准备好&#xff0c;软著申请时间比较长大概需要1-2周时间才能下来&#xf…