爬取深圳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).textsoup = 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).textsoup = BeautifulSoup(data,'lxml')#titletitle_h1 = soup.find('h1',class_='main')for titles in title_h1:title = titles#areaarea_span = soup.find('span',class_='info')area_a = area_span.find('a').textfor position_a in area_span.find_all('a')[-1]:position = position_a#communitycommunity = soup.find('a',class_='info').text#total_pricetry:total_price_div = soup.find('div',class_='price')for total_price_span in total_price_div.find('span',class_='total'):total_price = total_price_spanexcept:total_price = None# unit_pricetry:unit_price_span = soup.find('span',class_='unitPriceValue')unit_price = unit_price_span.get_text(strip=True, separator=" ")[:-4]except:unit_price = None#hourseTypehourseType = soup.find('div',class_='mainInfo').text#hourseSizehourseSize_div = soup.find('div',class_='area')for hourseSize_divs in hourseSize_div.find('div',class_='mainInfo'):hourseSize = hourseSize_divs#directiondirection_div = soup.find('div',class_='type')for direction_divs in direction_div.find('div',class_='mainInfo'):direction = direction_divs#fitmentfitment_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博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

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

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

相关文章

鲜活很有感染力的女生图片_活力满满有生命力女生图片

鲜活很有感染力的女生图片_活力满满有生命力女生图片

公有云Linux模拟UDP端口并抓包

目录 写在前面操作步骤服务端开启UDP端口并监听客户端连接Wireshark抓包查看 写在前面 关于具体的操作&#xff0c;请参考我的上一篇文章 公有云Linux模拟TCP三次挥手与四次握手&#xff08;Wireshark抓包验证版&#xff09; 在本文&#xff0c;仅介绍与上一篇不同的地方。 操…

R语言:GSEA分析

#安装软件包 > if (!requireNamespace("BiocManager", quietly TRUE)) install.packages("BiocManager") > BiocManager::install("limma") > BiocManager::install("org.Hs.eg.db") > BiocManager::install("…

【算法刨析】完全背包

完全背包与01背包的区别 01背包对于一个物品只能选择一次&#xff0c;但是完全背包可以选择任意次&#xff1b; 思路 和01背包类似&#xff0c;01背包我们只需要判断选或不选&#xff0c;完全背包也是如此&#xff0c;不同的是&#xff0c;对于这个物品我们在判断选后在增加一…

【送书福利第七期】你好!Java(文末送书)

文章目录 编辑推荐内容简介作者简介目录前言/序言 编辑推荐 适读人群 &#xff1a;程序员;相关院校师生 本书以轻松幽默的语言&#xff0c;从零开始介绍Java语言。书名来源于编程语言中最经典的Hello World程序&#xff0c;寓意带读者从入门到精通。 书中每章都设有总结与扩展…

vue3延迟加载(异步组件​)defineAsyncComponent

最简单用法 Index.vue: <script setup> import { onMounted, defineAsyncComponent } from vue import ./index.cssconst Child defineAsyncComponent(() > import(./Child.vue))onMounted(() > {}) </script><template><div class"m-home-w…

Linux学习笔记4

书接上文&#xff0c;我们上两篇在讲建立最小Linux系统时要创建的几个脚本&#xff0c;接下来我们继续说一下 建立最小系统之创建文件系统所需文件&#xff08;续&#xff09; 之后我们返回etc目录&#xff0c;再返回system目录&#xff0c;接着使用“cd lib”命令进入到lib …

现在做电商迟吗?那是你不知道今年黑马,视频号小店重磅来袭

大家好&#xff0c;我是电商笨笨熊 24年想做电商&#xff0c;还能不能做&#xff1f; 当然可以。 电商是一个长期的市场&#xff0c;只要用户有需求&#xff0c;那么电商就会一直存在&#xff1b; 尤其是近几年来无货源模式爆火&#xff0c;对于我们商家来说这种无需自备货…

flutter 使用Scrollbar 时出现 滚动条不置顶问题

Flutter 使用 CupertinoScrollbar 、Scrollbar 与 ListView.builder 结合使用时&#xff0c; 当把 ListView.builder 边距设置为 padding: const EdgeInsets.all(0) 的时候&#xff0c; Scrollbar 的滚动条不置顶。 如图&#xff1a;右侧边上的滚动条 解决方法&#xff1a; …

抖店的爆品,到底是选出来的还是推出来的?我的看法是......

我是王路飞。 做电商的&#xff0c;你要说你对爆品没有想法&#xff0c;那劝你不要做了。 有人认为做抖店&#xff0c;爆品都是选出来的&#xff0c;毕竟方向不对&#xff0c;努力白费。 也有人认为做抖店&#xff0c;爆品都是推出来的&#xff0c;再好的产品&#xff0c;达…

KNIME 报告扩展

文档对应的 KNIME AP 版本为 5.2 介绍 本指南介绍了 KNIME 报告扩展&#xff0c;并展示了如何创建简单和高级报告。 本指南更新于 2024/05/13&#xff0c;最新版请访问指北君网站 https://havef.fun/knime-cn/knime-doc/ KNIME 报告扩展允许您根据工作流程的结果创建静态报告。…

租赁小程序开发搭建支持时租日租月租

租赁小程序开发搭建支持时租日租月租 一款开源版的小程序&#xff0c;专为物品租赁服务设计&#xff0c;能满足客户在各种租赁场景中的需求。 该程序支持时租、日租、夜租等多种租赁方式&#xff0c;并配备了DIY页面和分销系统。用户可以通过平台轻松租赁商品&#xff0c;支付…

HTML与cgi程序的数据交互

1. Html通过ajax获取cgi返回的数据 function HtmlGetCgiData() {$.ajax({type: POST, //提交方法url: cgi-bin/wg67_key_in/wg67_key_in_reflush.cgi, //调用到的cgi程序data: "ajax", //发送的数据&#xff0c;不可缺失该项&#xff0c;不能为空&#xff08;空&…

[Linux][网络][协议技术][DNS][ICMP][ping][traceroute][NAT]详细讲解

目录 1.DNS1.DNS背景2.域名简介 2.ICMP协议1.ICMP功能2.ICMP两类报文 3.ping命令4.traceroute5.NAT技术1.NAT技术背景2.NAT IP转换过程3.静态地址NAT && 动态地址NAT4.网络地址端口转换NAPT5.NAT技术的缺陷6.NAT和代理服务器 6.总结1.数据链路层2.网络层3.传输层4.应用…

难以重现的 Bug如何处理

对很多测试人员&#xff08;尤其是对新手来说&#xff09;在工作过程中最不愿遇到的一件事情就是&#xff1a;在测试过 程中发现了一个问题&#xff0c;觉得是 bug&#xff0c;再试的时候又正常了。 碰到这样的事情&#xff0c;职业素养和测试人员长期养成的死磕的习性会让她…

SpringBoot工程引用其他工程构建的jar包

1、问题 存在A、B两个工程&#xff0c;其中B工程需要引用A工程的jar包。 2、解决办法 A工程 &#xff08;1&#xff09;自动配置bean。 Configuration ComponentScan("cn.ac.trimps.auth.**") public class AuthClientConfig {} Retention(RetentionPolicy.RUNTIME…

Android Studio开发之路(十)app中使用aar以及报错记录

书接上文&#xff1a;Android Studio开发之路&#xff08;九&#xff09;创建android library以及生成aar文件 五、app中使用aar文件的方法 先复制一下上面生成的aar文件。然后在你要添加到的app左上角选择“project”模式&#xff0c;然后找到libs文件夹&#xff0c;点击右键…

全自动封箱机:智能包装与物流领域的新引擎,助力产业升级

在智能化、自动化的浪潮下&#xff0c;全自动封箱机以其高效、精准的特点&#xff0c;正逐渐成为智能包装和物流领域的新宠。这种先进的机械设备不仅提升了包装效率&#xff0c;还大大地推动了物流行业的现代化进程&#xff0c;为产业升级注入了新动力。 全自动封箱机的重要性不…

Centos中将UTC的时区改为CTS时区

date命令可以看到现在的时间以及时区&#xff0c;可以看到现在是UTC时区 而想要更改时区那么就要了解tzselect命令 tzselect 是一个 Linux 命令行工具&#xff0c;用于交互式地帮助用户选择并设置系统的时区。这个程序会通过一系列的问题引导用户&#xff0c;从而确定用户所在的…

【Linux网络】HTTPS【上】{运营商劫持/加密方式/数据摘要/https的诞生}

文章目录 1.引入1.1http与https1.2SSL/TLS1.3VPN1.4认识1.5密码学1.6为什么要加密&#xff1f;运营商 1.7常见的加密方式对称加密非对称加密 2.加密与解密3.数据摘要 && 数据指纹MD5 数字 签名理解三者数据摘要&#xff08;Digital Digest&#xff09;&#xff1a;数字…