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

前言

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

环境使用:

  • 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

尾语

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

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

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

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值