当前位置: 首页 > news >正文

网页爬虫--赶集网租房信息爬取(Python)

代码:

import requests #网络请求

from requests import Response #网络响应

import re #解析页面数据 正则

import xlwt #存储数据 excel

base_url="https://xa.58.com/zufang/pn{}"  #定义了一个名为 base_url 的字符串变量,用于构建访问特定页面的 URL

header ={

    "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 Edg/122.0.0.0"

}    #网页中网络里面找的

#1.请求网页数据

def get_data(url):

    #发送网络请求,将服务的相应放到resp中

    resp:Response = requests.get(url,headers=header)

    #处理响应

    if resp.status_code==200:#检查前面发送的请求(resp)的状态码是否为 200

        print ("请求成功!")

        print(resp.text)

        parse_data(resp.text)

    else:

        print("请求失败!")

sublist = []

house_list = []

#2. 解析数据re

def parse_data(data):

    houses = re.findall(r"""

    <li.+?house-cell.+?<a.+?strongbox.+?>(.+?)</ a>.+?room">(.+?)</p >.+?"money".+?class="strongbox">(.+?)</b>

    """, data, flags=re.VERBOSE | re.DOTALL)

    for h in houses:

        print(h[0].lstrip().rstrip()) #这行代码的作用是打印出列表 h 中的第一个元素,并去除其左右两端的空格。

                                     # lstrip() 方法用于去除字符串左侧的空格,rstrip() 方法用于去除字符串右侧的空格

        ret = h[1].split("     &nbsp;&nbsp;&nbsp;&nbsp") #这行代码的作用是将列表 h 中的第二个元素按照字符串 " &nbsp;&nbsp;&nbsp;&nbsp" 进行分割

        print(ret[0],ret[1].rstrip())

        print(h[2])

        sublist.append(h[0].lstrip().rstrip())#将列表 h 中的第一个元素去除左右两端的空格后,添加到 sublist 这个列表中

        sublist.append(ret[1].rstrip())

        sublist.append(h[2])

        house_list.append(sublist)

    print(house_list)

    save_data(house_list)

#3.存储数据到excel文件中

def save_data(list):

# 工作簿--->工作表--->单元格

# 1.创建工作簿

    workbook = xlwt.Workbook()

# 2.在工作簿里面添加工作表

    sheet = workbook.add_sheet("西安租房信息")

# 3.在工作表中添加单元格

    for row in range(len(list)):  # 0,1,2,3

        for col in range(len(list[row])):

            #print(row, col, list[row][col])

            sheet.write(row, col, list[row][col])

# 4.保存工作簿

    workbook.save("赶集网——租房信息.xlsx")

if __name__=='__main__':

    for i in range(1,6):

        print(f"开始请求第{i}页数据")

        get_data(base_url.format(i))

相关文章:

  • 开源模型应用落地-模型上下文协议(MCP)-第三方MCP Server实战指南(五)
  • 机器学习 从入门到精通 day_05
  • 生成式引擎优化(GEO)发展史与行业标准演变
  • (三) 傅里叶变换:把信号拆成音符的秘密
  • 【LLM】解锁Agent协作:深入了解谷歌 A2A 协议与 Python 实现
  • 邮件发送频率如何根据用户行为动态调整?
  • # 更换手机热点后secureCRT无法连接centOS7系统
  • 入门-C编程基础部分:2、第一个程序
  • 从零开始学习SLAM | 用四元数插值来对齐IMU和图像帧
  • 基于ESP32-S3 蓝牙SDK封装设计
  • 阿里计算机专业面试宝典1
  • javaweb的基础2
  • 【计算机网络】什么是路由?核心概念与实战详解
  • 群晖如何通过外网访问
  • KingbaseES之KDts迁移SQLServer
  • 安徽京准:GPS北斗卫星时空信号安全防护装置(授时)介绍
  • 【Unity笔记】Unity超时检测器开发:支持自定义重试次数与事件触发
  • AIP-231 批量方法:Get
  • 树莓派超全系列教程文档--(24)本地化设置、SSH及配置防火墙
  • 本地mock服务编写
  • 夜读丨修车与“不凑合”
  • 中国铝业首季“开门红”:净利润超35亿元,同比增加近六成
  • 现场观察·国防部记者会|美将举行大演习“应对中国”,备战太平洋引发关注
  • 银行板块整体走强,工行、农行、中行股价再创新高
  • 男子闲鱼卖手机卷入电诈案后成“网逃”续:警方已排除其作案嫌疑
  • 2025一季度,上海有两把刷子