这是一个用Python编写的网络爬虫程序,旨在从链家网(Lianjia)的上海二手房页面收集房源信息。该程序使用requests
库来发起对链家网的HTTP请求,用BeautifulSoup
库来解析返回的HTML页面,最后使用pandas
库把收集到的数据保存到Excel文件中。
主要功能
- 分页爬取: 程序可以遍历链家网的二手房列表页面,这里以爬取前10页作为示例。
- 字段提取: 从每个房源卡片上抓取多个字段,包括区域、房型、朝向、楼层、标签、楼龄、装修、电梯、权属、类型、售价、面积、用途、单价和总价。
- 数据保存: 将所有抓取到的信息保存到一个Excel文件中。
使用库
requests
: 用于网络请求。BeautifulSoup
: 用于解析HTML并提取所需数据。pandas
: 用于数据处理和保存Excel。
注意事项
- 需要根据实际的HTML页面结构调整数据提取的代码。
- 在运行此程序之前,请确保您已经获得了链家网站的许可,且遵守其使用条款。
这个程序主要适用于数据分析、房地产研究或其他需要大量房源信息的场合。它为用户提供了一种自动化、高效地收集链家网上二手房信息的方法。
import requests from bs4 import BeautifulSoup import pandas as pd # 收集单页数据 xpanx.com def fetch_data(page_number): url = f"https://sh.lianjia.com/ershoufang/pg{page_number}/" response = requests.get(url) if response.status_code != 200: print("请求失败") return [] soup = BeautifulSoup(response.text, 'html.parser') rows = [] for house_info in soup.find_all("li", {"class": "clear LOGVIEWDATA LOGCLICKDATA"}): row = {} # 使用您提供的类名来获取数据 xpanx.com row['区域'] = house_info.find("div", {"class": "positionInfo"}).get_text() if house_info.find("div", {"class": "positionInfo"}) else None row['房型'] = house_info.find("div", {"class": "houseInfo"}).get_text() if house_info.find("div", {"class": "houseInfo"}) else None row['关注'] = house_info.find("div", {"class": "followInfo"}).get_text() if house_info.find("div", {"class": "followInfo"}) else None row['单价'] = house_info.find("div", {"class": "unitPrice"}).get_text() if house_info.find("div", {"class": "unitPrice"}) else None row['总价'] = house_info.find("div", {"class": "priceInfo"}).get_text() if house_info.find("div", {"class": "priceInfo"}) else None rows.append(row) return rows # 主函数 def main(): all_data = [] for i in range(1, 11): # 爬取前10页数据作为示例 print(f"正在爬取第{i}页...") all_data += fetch_data(i) # 保存数据到Excel xpanx.com df = pd.DataFrame(all_data) df.to_excel('lianjia_data.xlsx', index=False) print("数据已保存到 'lianjia_data.xlsx'") if __name__ == "__main__": main()
以下是用到的几个主要知识点的详细介绍:
网络请求(HTTP)
- HTTP请求方法: 了解HTTP的GET和POST请求是非常有用的。在这个项目中,主要用到了GET请求来获取网页数据。
HTML和网页结构
- HTML基础: 理解HTML的基础结构以及标签、属性、类等是必须的,因为这将帮助你使用
BeautifulSoup
来定位和提取网页上的特定元素。
Python编程
- Python列表和字典: 由于爬取到的数据通常是结构化或半结构化的,因此需要用到Python的列表和字典来存储这些数据。
- 字符串操作: 清洗和处理文本数据时,会用到Python的字符串操作方法。
- 异常处理: 了解如何使用
try
和except
来处理可能出现的错误或异常,如网络请求失败、数据字段缺失等。
数据解析
- BeautifulSoup: 这是一个用于解析HTML和XML文档的Python库。了解如何使用它来搜索、遍历和修改网页树是非常有用的。
数据处理和存储
- Pandas: 这是一个用于数据分析和操作的Python库。特别是
DataFrame
对象,它是一个表格型的数据结构,并带有标签。 - Excel操作: 了解如何使用
pandas
的to_excel
方法将DataFrame保存为Excel文件。
代码组织和项目结构
- 模块和函数: 理解如何将代码组织成函数和模块,以提高代码的可读性和可维护性。
- 注释和文档: 良好的注释和文档不仅可以帮助其他人理解你的代码,也是代码质量的一个重要标志。
- 版本控制: 虽然这不是代码的一部分,但使用像Git这样的版本控制系统是一个好习惯,它可以帮助你跟踪代码的更改。
通过掌握这些知识点,你将更加容易地完成这样的网络爬虫项目。
https://xpanx.com/
评论