爬取Q房二手房房源信息

embedded/2024/12/22 14:47:32/

文章目录

  • 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)  # 构建完整URLhtml = 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表达式的优化和数据清洗的问题,但通过不断调试和改进,最终达到了预期效果。此项目不仅提升了我们的爬虫编写技能,也加深了对网页结构和数据提取流程的理解,为今后处理更复杂的数据抓取任务打下了坚实基础。

http://www.ppmy.cn/embedded/147852.html

相关文章

少儿编程教育系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

【操作系统不挂科】<内存管理-文件系统实现(18)>选择题(带答案与解析)

前言 大家好吖,欢迎来到 YY 滴 操作系统不挂科 系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 本博客主要内容,收纳了一部门基本的操作系统题目,供yy应对期中考试复习。大家可以参考 本章为系列题库,其他…

OpenCV与Qt5开发卡尺找圆工具

文章目录 前言一、卡尺原理二、1D边缘提取三、圆拟合四、软件实现结束语 基于OpenCV与Qt5构建卡尺找圆工具 前言 博主近期基于海康Vision Master4.0做了一个工业视觉工程项目,其中就使用到了海康VM的找圆工具,然后博主根据其中的技术原理,也…

SAP RESTful架构和OData协议

一、RESTful架构 RESTful 架构(Representational State Transfer)是一种软件架构风格,专门用于构建基于网络的分布式系统,尤其是在 Web 服务中。它通过利用 HTTP 协议和一组简单的操作(如 GET、POST、PUT、DELETE&…

堆【Lecode_HOT100】

文章目录 1.数组中的第K个最大元素No.2152.前K个高频元素347 1.数组中的第K个最大元素No.215 方法一:NlogN不能满足时间复杂度的要求 public int findKthLargest(int[] nums, int k) {Arrays.sort(nums);return nums[nums.length-k];}方法二&…

DePIN潜力项目Spheron解读:激活闲置硬件,赋能Web3与AI

DePIN赛道作为今年加密资本关注的热点之一,不仅吸引了大量资金涌入,还凭借其灵活的资源调配、高效的运作方式和可靠的安全性能,逐渐渗透到多个领域和项目中。例如,Helium的无线网络协议、IoTeX的去中心化物联网、IO NET的去中心化…

线程和进程、作业的区别

线程和进程、作业的区别 作业(任务)有多个进程,进程有多个线程 进程(Process): 进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。 每个进程都有独立的内存空间&#xff0c…

编辑, 抽成组件

问题 错误思路: 1 dept不能修改, 用watch监听一下:赋值给新的变量进行修改, 问题: currentDept 发生改变, depth也发生了改变,因为是浅拷贝, 用了json.pase(json.stringify(value…