安居客二手房二级网页爬取
时间: 2025-01-04 12:26:47 浏览: 20
### 使用Python爬虫抓取安居客网站上的二手房数据
#### 准备工作
为了成功抓取安居客网站上的二手房数据,需先安装必要的库。这些库包括`requests`用于发送HTTP请求,`BeautifulSoup`或`lxml`解析HTML文档,以及`pandas`处理和保存数据。
```bash
pip install requests beautifulsoup4 lxml pandas
```
#### 设置请求头与URL构建
模拟浏览器行为有助于绕过某些反爬机制。设置合理的User-Agent字符串,并考虑加入其他头部字段来伪装成真实用户的访问。对于安居客这样的大型房产平台来说,通常会分页展示房源列表,因此需要构造带有参数的URL以便遍历多页面。
```python
import requests
from bs4 import BeautifulSoup as BS
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
}
base_url = "https://bj.anjuke.com/sale/p{}"
```
#### 获取网页内容并解析
通过循环迭代指定范围内的页数,向每一页发起GET请求获取响应体;利用BS对象加载返回的内容,定位到包含所需信息的具体标签结构内提取有效文本节点值。
```python
data_list = []
for page_num in range(1, 11): # 假设只抓前10页
url = base_url.format(page_num)
resp = requests.get(url=url, headers=headers)
soup = BS(resp.text, features="html.parser")
house_items = soup.select(".list-item") # 这里假设类名为.list-item
for item in house_items:
title = item.find('a', class_='house-title').get_text(strip=True)[^2]
price = item.find('span', class_='price-det').strong.get_text()
room_info = item.find_all('div')[1].contents[3].strip().split('|')[:3]
data_dict = dict(
name=title,
price=price,
rooms=''.join(room_info),
)
data_list.append(data_dict)
```
#### 数据清洗与存储
考虑到实际应用中可能遇到的数据格式不一致等问题,在此阶段应该对收集来的原始资料做进一步清理转换操作,比如去除多余空白字符、统一数值单位等。最后可选用CSV/Pickle/MongoDB等方式持久化记录下来供后续分析使用。
```python
df = pd.DataFrame(data_list)
df.to_csv('./anjuke_housing.csv', index=False, encoding='utf_8_sig')
print("Data has been saved successfully.")
```
阅读全文