爬取Q房二手房房源信息

文章目录

  • 1. 实战概述
  • 2. 网站页面分析
  • 3. 编写代码爬取Q房二手房房源信息
    • 3.1 创建项目与程序
    • 3.2 运行程序,查看结果
  • 4. 实战小结

1. 实战概述

  • 本次实战项目旨在通过编写Python爬虫程序,抓取深圳Q房网上的二手房房源信息。我们将分析网页结构,确定房源信息的XPath路径,并实现数据的提取与CSV文件存储。通过本项目,学习如何运用requests库发送HTTP请求,使用lxml.etree解析HTML,以及如何高效地处理和存储爬取的数据。

2. 网站页面分析

  • 第1页房源 - https://shenzhen.qfang.com/sale/f1
    在这里插入图片描述
  • 第2页房源 - https://shenzhen.qfang.com/sale/f2
    在这里插入图片描述
  • 发现URL构造规律:https://shenzhen.qfang.com/sale/f + 页码
  • 查看房源列表源码
    在这里插入图片描述
  • 针对第一个li,拷贝其XPath//*[@id="cycleListings"]/ul/li[1],去掉[1],根据//*[@id="cycleListings"]/ul/li获取房源列表
  • 针对每一个房源,要爬取的信息用红框标注
    在这里插入图片描述

3. 编写代码爬取Q房二手房房源信息

3.1 创建项目与程序

  • 创建Q房网爬虫实例项目,在里面创建QHouseCrawler.py程序
    在这里插入图片描述
from lxml import etree  # 导入lxml解析库
import requests  # 导入HTTP请求库,用于发送网络请求
import csv  # 导入CSV库,用于读写CSV文件
import time  # 导入时间库,用于在请求间添加延迟

# 定义爬虫主函数
def spider():
    # 定义爬虫头部信息,模拟浏览器访问
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
    }

    url_prefix = "https://shenzhen.qfang.com/sale/f"  # 定义基础URL前缀
    for page in range(1, 11):  # 遍历所有页面,从第1页到第10页
        url = url_prefix + str(page)  # 构建完整URL
        html = requests.get(url, headers=headers)  # 发送HTTP GET请求
        time.sleep(2)  # 等待2秒,避免请求过于频繁
        selector = etree.HTML(html.text)  # 解析HTML内容
        house_list = selector.xpath('//*[@id="cycleListings"]/ul/li')  # 使用XPath定位所有房屋信息
        for house in house_list:  # 遍历每个房屋信息
            apartment = house.xpath('div[2]/div[1]/a/text()')[0]  # 提取公寓名称
            house_layout = house.xpath('div[2]/div[2]/p[1]/text()')[0]  # 提取房屋布局
            area = house.xpath('div[2]/div[2]/p[2]/text()')[0]  # 提取面积
            region = house.xpath('div[2]/div[4]/text()')[0]  # 提取地区
            item = [apartment, house_layout, area, region]  # 构建数据项列表
            cleaned_item = [i.replace('\r', '').replace('\n', '').replace(' ', '') for i in item]  # 清理数据中的换行符和多余空格
            data_writer(cleaned_item)  # 写入CSV文件
            print('正在抓取……', cleaned_item)  # 打印当前抓取的数据项

# 将数据写入CSV文件的函数
def data_writer(item):
    with open('Q房-二手房.csv', 'a',  # 打开CSV文件,'a'模式表示追加写入
              encoding='utf-8', newline='') as csvfile:  # 设置文件编码为utf-8,避免中文乱码
        writer = csv.writer(csvfile)  # 创建CSV写入器
        writer.writerow(item)  # 写入一行数据

if __name__ == '__main__':  # 如果直接运行此脚本
    spider()  # 调用爬虫函数

3.2 运行程序,查看结果

  • 查看控制台输出
    在这里插入图片描述
  • 查看生成的结果文件
    在这里插入图片描述
    在这里插入图片描述

4. 实战小结

  • 在本次实战中,我们成功地分析了深圳Q房网二手房页面的结构,掌握了房源信息的XPath定位方法。通过编写Python爬虫脚本,我们实现了从网页动态加载的房源列表中提取关键信息,并将数据存储至CSV文件。在实践过程中,我们遇到了XPath表达式的优化和数据清洗的问题,但通过不断调试和改进,最终达到了预期效果。此项目不仅提升了我们的爬虫编写技能,也加深了对网页结构和数据提取流程的理解,为今后处理更复杂的数据抓取任务打下了坚实基础。

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

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

相关文章

易语言OCR银行卡文字识别

一.引言 文字识别,也称为光学字符识别(Optical Character Recognition, OCR),是一种将不同形式的文档(如扫描的纸质文档、PDF文件或数字相机拍摄的图片)中的文字转换成可编辑和可搜索的数据的技术。随着技…

6.3.1 MR实战:计算总分与平均分

在本次实战中,我们的目标是利用Apache Hadoop的MapReduce框架来处理和分析学生成绩数据。具体来说,我们将计算一个包含五名学生五门科目成绩的数据集的总分和平均分。这个过程包括在云主机上准备数据,将成绩数据存储为文本文件,并…

MongoDB、Mongoose使用教程

文章目录 一:MongoDB 简介1.1 什么是 MongoDB1.2 特点1.3 与关系数据库的区别:1.4 资源链接: 二:安装 MongoDB2.1 安装前的准备2.2 安装、启动 MongoDB2.3 创建用户 MongoDB 三、连接四:MongoDB 基础操作4.1 库操作&am…

【2024/12最新】CF罗技鼠标宏分享教程与源码

使用效果: 支持的功能 M4 7发一个点HK417 连点瞬狙炼狱加特林一个圈 下载链接 点击下载

vue2组件

文章目录 组件注册全局注册局部注册 组件中的props格式单向数据校验 组件中的事件使用传参声明事件校验 组件上的v-model使用携带参数多个v-model处理修饰符 透传 Attributes简单使用禁用透传多个继承 动态组件介绍使用KeepAlive包含缓存生命周期 插槽使用默认内容具名插槽条件…

【C++】用哈希表封装myunordered_map和myunordered_set

前言 本篇博客我们来用哈希表模拟实现一下STL库里的unordered_map与unordered_set 💓 个人主页:小张同学zkf ⏩ 文章专栏:C 若有问题 评论区见📝 🎉欢迎大家点赞👍收藏⭐文章 目录 1.源码及框架分析 2.模…

在linux系统的docker中安装GitLab

一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …

Restaurants WebAPI(一)—— clean architecture

文章目录 项目地址一、Restaurants.Domain 核心业务层1.1 Entities实体层1.2 Repositories 数据操作EF的接口二、Restaurants.Infrastructure 基础设施层2.1 Persistence 数据EF CORE配置2.2 Repositories 数据查询实现2.3 Extensions 服务注册三、Restaurants.Application用例…

全栈开发----Mysql基本配置与使用

本篇是在已下载Mysql的情况下进行的,若还未下载或未创建Mysql服务,请转到这篇: 2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)_mysql8.0.40下载安装教程-CSDN博客 本文对于mysql的操作均使用控制台sql原生代码…

AI可信论坛亮点:合合信息分享视觉内容安全技术前沿

前言 在当今科技迅猛发展的时代,人工智能(AI)技术正以前所未有的速度改变着我们的生活与工作方式。作为AI领域的重要盛会,CSIG青年科学家会议AI可信论坛汇聚了众多青年科学家与业界精英,共同探讨AI技术的最新进展、挑…

逆变器中自举电路设计要点及其取值分析

自举电源具有电路简单,成本低等优点。可以减小变压器尺寸,可以使用较小的磁芯骨架即可满足整机对电源的需求。不过其也有不足之处,比如只能用于小功率设计(驱动器已验证到11KW50A模块的驱动设计),对输出响应…

如何测量分辨率

一、什么是分辨率? 分辨率指的是分清物体细节的能力。分辨率是一个成像系统还原空间频率的能力。一些人只是简单的用分辨率去描述极限分辨率,但是相机在在不同的对比度的情况下还原低,中和高频率的能力,也可以显示全面综合的信息。…

springboot中——Logback介绍

程序中的日志&#xff0c;是用来记录应用程序的运行信息、状态信息、错误信息等。 Logback基本使用 springboot的依赖自动传递了logback的依赖&#xff0c;所以不用再引入依赖 之后在resources文件下创建logback.xml文件&#xff0c;写入 <?xml version"1.0" …

git 删除鉴权缓存及账号信息

在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键&#xff0c;打开“运行”对话框&#xff0c;输入control&#xff0c;然后回车&#xff0c;打开控制面板。在控制面板中找到“用户账户”&#xff0c;然后点击“凭据管理器”。在凭据管理器中&#xff0c;找到“Windows…

Apache Solr RCE(CVE-2017-12629)--vulhub

Apache Solr 远程命令执行漏洞&#xff08;CVE-2017-12629&#xff09; Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发&#xff0c;主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个…

vue预览和下载 pdf、ppt、word、excel文档,文件类型为链接或者base64格式或者文件流,

** 方法1&#xff1a;word、xls、ppt、pdf 这些文件&#xff0c; 如果预览的文件是链接可以直接打开&#xff0c;可用微软官方的预览地址 ** <iframe width"100%" :src"textVisibleURl " id"myFramePPT" style"border: none;backgroun…

Postbot使用教程

1.什么是Postbot&#xff1f; Postbot 是 Postman 中 API 工作流的 AI 助手。您可以让 Postbot 帮助您排查 API 请求问题、编写测试脚本和文档以及理解大型数据集。如果您需要有关使用 Postman 的帮助或不确定下一步该怎么做&#xff0c;也可以向 Postbot 询问。 2.开始使用 …

考试报名管理系统

集中实践报告 ---《项目综合实习1(数据结构)》 题目:考试报名管理系统 系统设计与开发 摘 要 随着教育信息化的不断推进,考试报名管理系统在各类教育机构中的重要性日益凸显。本文旨在设计与实现一个高效、稳定且功能完备的考试报名管理系统,以满足现代教育考试的…

冬日养仓鼠小指南:温暖与陪伴同行

随着冬日的脚步悄然来临&#xff0c;家中可爱的小仓鼠也需要我们给予更多的关怀与呵护。仓鼠虽小&#xff0c;但它们的冬日养护却大有学问&#xff0c;关乎着这些小生命能否健康快乐地度过寒冷季节。 保暖是冬季养仓鼠的首要任务。我们可以为仓鼠的小窝增添一些保暖材料&#…

用C#(.NET8)开发一个NTP(SNTP)服务

完整源码&#xff0c;附工程下载&#xff0c;工程其实也就下面两个代码。 想在不能上网的服务器局域网中部署一个时间服务NTP&#xff0c;当然系统自带该服务&#xff0c;可以开启&#xff0c;本文只是分享一下该协议报文和能跑的源码。网上作为服务的源码不太常见&#xff0c;…