selenium爬取链家网二手房数据
时间: 2023-09-30 19:12:08 浏览: 214
使用selenium爬取链家网二手房数据的步骤如下:
1. 安装selenium库和对应的浏览器驱动,比如Chrome浏览器和Chrome驱动。
2. 打开链家网的二手房页面,使用selenium模拟搜索关键词或者直接进入目标城市的二手房页面。
3. 使用selenium模拟点击“下一页”操作,直到获取全部的二手房数据。
4. 使用BeautifulSoup或者正则表达式提取所需的二手房数据,比如房屋标题、房屋价格、房屋面积、房屋地址等。
5. 将提取的二手房数据保存到本地文件或者数据库中。
以下是一个示例代码,可以爬取上海市浦东新区的二手房数据:
``` python
from selenium import webdriver
from bs4 import BeautifulSoup
# 设置浏览器驱动路径
driver_path = 'C:/chromedriver.exe'
# 创建Chrome浏览器实例
driver = webdriver.Chrome(executable_path=driver_path)
# 打开链家网二手房页面
driver.get('https://sh.lianjia.com/ershoufang/pudong/')
# 最大化窗口
driver.maximize_window()
# 定义一个空列表,用于存储所有二手房数据
house_list = []
while True:
# 获取页面源代码
html = driver.page_source
# 使用BeautifulSoup解析页面源代码
soup = BeautifulSoup(html, 'lxml')
# 获取所有包含二手房信息的div标签
house_items = soup.find_all('div', class_='info clear')
# 遍历每个二手房信息标签,提取所需数据
for item in house_items:
# 获取房屋标题
title = item.find('div', class_='title').get_text().strip()
# 获取房屋总价
price_total = item.find('div', class_='price').find('span').get_text()
# 获取房屋单价
price_unit = item.find('div', class_='price-pre').get_text()
# 获取房屋面积
area = item.find('div', class_='houseInfo').find_all('a')[1].get_text()
# 获取房屋地址
address = item.find('div', class_='houseInfo').find_all('a')[0].get_text()
# 将所有数据存储到字典中
house_dict = {'title': title, 'price_total': price_total, 'price_unit': price_unit, 'area': area, 'address': address}
# 将字典添加到列表中
house_list.append(house_dict)
# 查找下一页按钮
next_button = driver.find_element_by_css_selector('.house-lst-page-box .page-box a:last-child')
# 如果下一页按钮可用,则点击进入下一页
if 'disabled' not in next_button.get_attribute('class'):
next_button.click()
# 否则,退出循环
else:
break
# 关闭浏览器实例
driver.quit()
# 打印所有二手房数据
for house in house_list:
print(house)
```
上述代码中,使用了BeautifulSoup库解析页面源代码,并用find方法提取所需数据。同时,使用了selenium模拟点击下一页按钮,直到获取全部的二手房数据。最后,将所有二手房数据存储到一个列表中,并打印输出。
阅读全文