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
规则,确保数据获取行为合法。