Python获取链家二手房源数据信息

news2024/11/16 9:33:07

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • Python 3.8

  • Pycharm

模块使用:

  • requests >>> pip install requests 数据请求模块

  • parsel >>> pip install parsel 数据解析模块

  • csv 内置模块


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可


最基本流程: <公式>

一. 数据来源分析

分析我们想要获取的数据内容, 可以请求那个链接能够得到

  1. 静态网页: 我们想要的数据, 在网页源代码里面就有

  2. 动态网页: 专门数据保存API接口 XHR

目的: 获取详情页面数据内容

获取详情页url地址

请求列表页面url地址

二. 代码实现步骤

  1. 发送请求, 请求列表页面url地址

  2. 获取数据, 获取网页源代码

  3. 解析数据, 提取 详情页面url地址

  4. 发送请求, 请求 详情页面url地址

  5. 获取数据, 获取网页源代码 <详情页面数据>

  6. 解析数据, 提取 价格 户型 面积 …房源信息

  7. 保存数据, 把房源数据保存表格文件

代码展示

# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入数据解析模块 --> 第三方模块, 需要安装 pip install parsel
import parsel
# 导入正则
import re
# 导入csv模块
import csv

f = open('二手房.csv', mode='w', encoding='utf=8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题',
    '售价',
    '单价',
    '户型',
    '楼层高度',
    '楼层数',
    '朝向',
    '样式',
    '装修',
    '面积',
    '时间',
    '建造',
    '小区',
    '区域',
    '商圈',
    '详情页',
])
csv_writer.writeheader()
"""
完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777”
1. 发送请求, 请求列表页面url地址
"""
# 请求链接 列表页面url
url = 'https://cs.lianjia.com/ershoufang/'
# 发送请求 <Response [200]> 表示请求成功
response = requests.get(url)
"""
2. 获取数据, 获取网页源代码
    response.text 获取网页源代码
    
3. 解析数据, 提取 详情页面url地址
    xpath
    css选择器: 根据标签属性提取数据内容
    re
"""
list_html_data = response.text
# 把获取html字符串数据, 转成可解析的对象
selector = parsel.Selector(list_html_data)
# 提取链接url地址
href = selector.css('.sellListContent li .info .title a::attr(href)').getall()
# for循环遍历
for link in href:
    """
    4. 发送请求, 请求 详情页面url地址
    5. 获取数据, 获取网页源代码 <详情页面数据>
    """
    link_data = requests.get(link).text
    """
    6. 解析数据, 提取 价格 户型 面积 ....房源信息
    """
    link_selector = parsel.Selector(link_data)
    try:
        title = link_selector.css('.main::text').get()  # 标题
        price = link_selector.css('.price .total::text').get()  # 售价
        price_1 = link_selector.css('.unitPriceValue::text').get()  # 单价
        room_type = link_selector.css('.room .mainInfo::text').get()  # 户型
        fool_info = link_selector.css('.room .subInfo::text').get()  # 楼层
        fool_list = fool_info.split('/')  # 字符串分割, 把字符串分割成列表
        fool_1 = fool_list[0]  # 高度
        完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777# fool_2 = fool_list[1].replace('共', '').replace('层', '') # 总计有多少层
        fool_num = re.findall('共(\d+)层', fool_list[1])[0]  # 层数
        room_face = link_selector.css('.type .mainInfo::text').get()  # 朝向
        subInfo = link_selector.css('.type .subInfo::text').get()
        style = subInfo.split('/')[0]  # 样式
        fitment = subInfo.split('/')[1]  # 装修
        area = link_selector.css('.area .mainInfo::text').get()  # 面积
        date_info = link_selector.css('.area .subInfo::text').get()  # 时间
        date = date_info.split('/')[0]  # 时间
        building = date_info.split('/')[1]  # 建筑类型
        communityName = link_selector.css('.communityName .info::text').get()  # 小区
        areaName_info = link_selector.css('.areaName .info a::text').getall()  # 区域
        areaName = areaName_info[0]  # 区域
        areaName_1 = areaName_info[1]  # 区域
        dit = {
            '标题': title,
            '售价': price,
            '单价': price_1,
            '户型': room_type,
            '楼层高度': fool_1,
            '楼层数': fool_num,
            '朝向': room_face,
            '样式': style,
            '装修': fitment,
            '面积': area,
            '时间': date,
            '建造': building,
            '小区': communityName,
            '区域': areaName,
            '商圈': areaName_1,
            '详情页': link,
        }
        csv_writer.writerow(dit)
        print(dit)
        # print(title, price, price_1, room_type, fool_1, fool_num, room_face, style, fitment, area, date, building, communityName, areaName, areaName_1)
    except:
        pass

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

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

相关文章

OJ#203.身高排序

题目描述 ​ 海贼小学为了强健学生的身体&#xff0c;每天课间都要组织学生在户外学做广播体操。​ 这一天&#xff0c;五年级三班的所有同学在老师的指引下将队形排成了 M行 N 列。 现已知所有同学 的身高&#xff0c;数值为整数&#xff0c;单位&#xff1a;厘米。要求在所有…

Ansible从入门到精通【五】

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 专栏名称&#xff1a;Ansible从入门到精通 立志成为ansible大佬 ansible-playbook企业级实战--handler hand…

爬虫基本的编码基础知识

爬虫的编码基础知识包括以下几个方面&#xff1a; 网络请求&#xff1a;使用Python中的requests库或urllib库发送HTTP请求&#xff0c;获取网页内容。 解析网页&#xff1a;使用Python中的BeautifulSoup库或lxml库解析HTML或XML格式的网页内容&#xff0c;提取所需的数据。 数…

如何开发视频上传和播放功能时,既省钱又体验好?

前言 现如今&#xff0c;大部分带内容的网站或应用都有视频区了&#xff0c;不说是大厂平台&#xff0c;就连个人开发者也相继在自己网站或小程序上迭代出视频板块。那既然有了视频模块&#xff0c;除个性化推荐&#xff0c;智能审核等这种费钱又耗时的功能外(个人开发者暂缓)。…

软件测试金融测试岗面试热点问题

1、网上银行转账是怎么测的&#xff0c;设计一下测试用例。 回答思路&#xff1a; 宏观上可以从质量模型&#xff08;万能公式&#xff09;来考虑&#xff0c;重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主&#xff0c;先列出转账的基本流和备选流。…

Hive Code2报错排查

前言 大多数可能的code2报错一般是内存不够&#xff0c;所以加下面这个配置可以有效解决这个问题 set hive.auto.convert.join false; #取消小表加载至内存中 但这个不一定是因为内存不够&#xff0c;其实很多错误都是报这种官方错误的&#xff0c;所以一定要去yarn上看日志。…

如何解决vcruntime140.dll找不到的问题?两种方法教你解决

当你在运行某些应用程序或游戏时&#xff0c;可能会遇到一个错误提示&#xff0c;即“找不到vcruntime140.dll”文件。这是因为你的电脑中缺少了这个动态链接库文件&#xff0c;这个问题可能会导致你无法正常使用某些应用程序。在本文中&#xff0c;我们将介绍两种方法来解决 …

Vue3.0快速入门(速查)

Vue也是基于状态改变渲染页面&#xff0c;Vue相对于React要好上手一点。有两种使用Vue的方式&#xff0c;可以直接导入CDN&#xff0c;也可以直接使用CLI创建项目&#xff0c;我们先使用CDN导入&#xff0c;学一些Vue的基本概念。 <!-- 开发环境版本&#xff0c;包含了有帮…

泰克AFG31000系列任意波函数发生器应用

模拟电路检定 这是一个模拟世界。所有物理量均使用模拟信号捕获和表示。因此&#xff0c;需要检定放大器、滤波器和转换器等模拟电路的性能。 InstaView? 技术避免在阻抗不匹配的 DUT 上增加的波形不确定性频率范围为 25 MHz 至 250 MHz由于信号保真度高&#xff0c;无需使…

MySql基础笔记

数据库相关概念 ​ 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase&#xff08;DB&#xff09;数据库管理系统操纵和管理数据库的大型软件DataBase Management System&#xff08;DBMS&#xff09;SQL操作关系型数据库的编程语言&#xff0c;定…

Java粮油MES系统源码(带可视化数据大屏)

▶ Java粮油MES系统实现一物一码&#xff0c;全程追溯 &#xff0c;正向追踪&#xff0c;逆向溯源&#xff0c;自主研发,有演示&#xff01; 一、粮油MES技术框架说明 开发语言&#xff1a;java 开发工具&#xff1a;idea或eclipse 前端框架&#xff1a;easyui 后端框架&…

横空出世!京东技术专家狂推的Redis笔记,实战和原理两开花

Redis 是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。国内外很多大型互联网公司…

【JavaSE】 封装

文章目录 一. 封装的概念二. 访问限定符三. 封装扩展之包1. 包的概念2. 导入包中的类3. 自定义包4. 包的访问权限控制举例5. 常见的包 四. static成员1. 简介2. static修饰成员变量3. static修饰成员方法 五. 代码块1. 代码块概念以及分类2. 普通代码块3. 构造代码块4. 静态代码…

chatgpt赋能python:Python可以实现两个数值的互换

Python可以实现两个数值的互换 Python是一种高效、易学且功能强大的编程语言&#xff0c;可以用于各种不同的编程目的&#xff0c;包括数据科学、网络编程、机器学习、人工智能等领域。其中&#xff0c;Python的一个最基本、最关键的操作就是对数值的处理&#xff0c;包括加减…

【SpringMVC】| SpringMVC的视图

目录 SpringMVC的视图 1. ThymeleafView 2. 转发视图 3. 重定向视图 4. 视图控制器view-controller SpringMVC的视图 &#xff08;1&#xff09;SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户。 &#xff08;2&am…

Android单元测试(五):网络接口测试

温馨提示&#xff1a;如果你不太熟悉单元测试&#xff0c;可以先看下之前四篇基础框架使用。便于你更好的理解下面的内容。 在平日的开发中&#xff0c;我们用后台写好给我们接口去获取数据。虽然我们有一些请求接口的工具&#xff0c;可以快速的拿到返回数据。但是在一些异常情…

怎么用u盘制作pe系统启动盘

PE系统是一种小型的windows系统&#xff0c;通俗的说法也就是在电脑出现问题不能正常进入系统时的一种紧急备用系统。它容量小能量大&#xff0c;可以解决win系统中经常遇到的一些问题&#xff0c;对于经常使用电脑的用户来说&#xff0c;制作一个pe系统启动盘放在身边是很有必…

selenium python教程第1章

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的AP…

【基于MATLAB的dijkstra算法】

基于MATLAB的dijkstra算法 %姓名&#xff1a;马伟 %日期&#xff1a;2023年6月七号 %作业&#xff1a;通信网理论&#xff0c;最小路径树D算法 function [distances, paths, tree] dijkstra(graph, startNode)numNodes size(graph, 1);distances inf(1, numNodes);visited …

网络安全怎么学?学习路线资料分享

一.自己对网络安全的理解 安全其实有很多个方向&#xff0c;从大的方面来说&#xff0c;也就是测试和开发。测试&#xff0c;细分下来&#xff0c;又有渗透&#xff08;也就是所谓的web&#xff09;&#xff0c;逆向&#xff08;也就是所谓的二进制&#xff0c;主要是代码审计方…