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

Python实例题:Python获取房天下数据

目录

Python实例题

题目

实现思路

代码实现

代码解释

get_fangtianxia_data 函数:

主程序:

运行思路

注意事项

Python实例题

题目

Python获取房天下数据

实现思路

  • 请求网页:使用 requests 库向房天下二手房页面发送请求,获取页面 HTML 内容。
  • 解析数据:运用 BeautifulSoup 库解析 HTML,提取所需的二手房信息,如房屋标题、价格、面积等。
  • 处理反爬:设置合适的请求头,模拟浏览器行为,控制请求频率,避免被网站封禁 IP。

代码实现

import requests
from bs4 import BeautifulSoup
import timedef get_fangtianxia_data(url):"""获取房天下指定页面的二手房数据:param url: 房天下二手房页面的 URL:return: 二手房信息列表"""headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}try:response = requests.get(url, headers=headers)response.raise_for_status()response.encoding = response.apparent_encodingsoup = BeautifulSoup(response.text, 'html.parser')house_list = []# 查找二手房信息的 HTML 元素,这里根据实际网页结构调整house_items = soup.find_all('div', class_='list - rel')for house_item in house_items:try:title = house_item.find('a', class_='title').text.strip()price = house_item.find('span', class_='price').text.strip()area = house_item.find('p', class_='area').text.strip()house_info = {'title': title,'price': price,'area': area}house_list.append(house_info)except AttributeError:continuereturn house_listexcept requests.RequestException as e:print(f"请求出错: {e}")return []if __name__ == "__main__":base_url = 'https://esf.fang.com/house/i3'total_pages = 3  # 要获取的总页数all_houses = []for page in range(1, total_pages + 1):url = f'{base_url}{page}/'houses = get_fangtianxia_data(url)all_houses.extend(houses)print(f"第 {page} 页获取到 {len(houses)} 条二手房信息。")time.sleep(2)  # 控制请求频率,避免被封禁 IP# 打印所有二手房信息for house in all_houses:print(house)

代码解释

  • 请求头设置:设置 User - Agent 请求头,模拟浏览器的请求行为,降低被反爬机制拦截的概率。
  • get_fangtianxia_data 函数

    • 向指定的房天下二手房页面发送 HTTP 请求。
    • 使用 BeautifulSoup 解析 HTML 内容,查找二手房信息的 HTML 元素。
    • 提取房屋标题、价格、面积等信息,存储在字典中并添加到列表里。
    • 处理请求异常,确保程序的健壮性。
  • 主程序

    • 定义基础 URL 和要获取的总页数。
    • 循环构造不同页码的 URL,调用 get_fangtianxia_data 函数获取每一页的二手房信息。
    • 使用 time.sleep(2) 控制请求频率,防止因频繁请求被网站封禁 IP。
    • 打印所有获取到的二手房信息。

运行思路

  • 安装依赖库:确保已经安装了 requests 和 beautifulsoup4 库,可使用以下命令进行安装:
pip install requests beautifulsoup4
  • 运行脚本:将上述代码保存为 get_fangtianxia_data.py 文件,在终端中运行:
python get_fangtianxia_data.py
  • 查看结果:程序会依次获取指定页数的二手房信息,并打印出来。

注意事项

  • 反爬机制:房天下有反爬机制,除设置请求头和控制请求频率外,可能还需处理验证码、IP 封禁等问题。
  • 网页结构变化:房天下的网页结构可能会随时变动,需要根据实际情况调整 HTML 元素的查找方式。
  • 合法性:在爬取数据时,要遵守网站的 robots.txt 规则,确保数据获取行为合法。
http://www.xdnf.cn/news/267373.html

相关文章:

  • 【第23节 系统工程】
  • 《解锁GCC版本升级:开启编程新世界大门》
  • PyTorch_张量转换为numpy数组
  • 【教学类-34-10】20250503(通义万相)4*3蝴蝶拼图(圆形、三角、正方、半圆的凹凸小块+参考图灰色)
  • 3392. 统计符合条件长度为 3 的子数组数目
  • RabbitMQ 中的六大工作模式介绍与使用
  • 【RocketMQ NameServer】- NameServer 启动源码
  • mysql安装,操作详解,适用于所有版本
  • 【25软考网工】第五章 (3)IPv6 报文格式、地址分类、过渡技术
  • 具备智能广告拦截、个性化定制的便捷网页浏览器
  • Python functools.partial 函数深度解析与实战应用
  • AI大模型基础设施:AMD的霄龙系列CPU
  • 学习海康VisionMaster之线线测量
  • 【Python生成器与迭代器】核心原理与实战应用
  • 打印Activity的调用者
  • 互联网大厂Java面试:从Spring到微服务的技术探讨
  • 用Ensaio下载GIS数据
  • 聚集索引与非聚集索引的区别有哪些?
  • 磁盘文件系统
  • 中间件和组件
  • 滑动窗口leetcode 904
  • 如何在3dMax中使用UVW展开修改器?
  • Flowable7.x学习笔记(十八)拾取我的待办
  • LeetCode //C - 696. Count Binary Substrings
  • HTML简介
  • Linux用户管理命令和用户组管理命令
  • spring2.x详解介绍
  • 【C/C++】Linux的futex锁
  • 终端与环境变量
  • 关于算法设计与分析——拆分表交换问题