前言
数据采集的步骤是固定:
- 发送请求, 模拟浏览器对于url地址发送请求
- 获取数据, 获取网页数据内容 --> 请求那个链接地址, 返回服务器响应数据
- 解析数据, 提取我们需要的数据内容
- 保存数据, 保存本地文件
所需模块
win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)
# 数据请求模块 第三方模块 需要安装 pip install requests
import requests
# 数据解析模块 第三方模块 需要安装 pip install parsel
import parsel
# 导入csv模块 内置模块 不需要安装
import csv # 固定模板
# 导入pandas模块
import pandas as pd
二手房源数据获取
请求数据
# 模拟浏览器
headers = {
# 用户代理 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36'
}
# 请求链接
url = 'https://cs.lianjia.com/ershoufang/'
# 发送请求
response = requests.get(url=url, headers=headers)
# 输出内容 <Response [200]> 响应对象 表示请求成功
print(response)
解析数据
我们这次选用css选择器: 根据标签属性提取数据内容
- 获取所有房源所在li标签
selector = parsel.Selector(response.text) # 选择器对象
# 获取所有房源所在li标签
lis = selector.css('.sellListContent li .info')
- for循环遍历
for li in lis:
title = li.css('.title a::text').get() # 标题
area_info = li.css('.positionInfo a::text').getall() # 区域信息
area_1 = area_info[0] # 小区
area_2 = area_info[1] # 区域
totalPrice = li.css('.totalPrice span::text').get() # 总价
unitPrice = li.css('.unitPrice span::text').get().replace('元/平', '') # 单价
houseInfo = li.css('.houseInfo::text').get().split(' | ') # 房源信息
HouseType = houseInfo[0] # 户型
HouseArea = houseInfo[1].replace('平米', '') # 面积
HouseFace = houseInfo[2] # 朝向
HouseInfo_1 = houseInfo[3] # 装修
fool = houseInfo[4] # 楼层
HouseInfo_2 = houseInfo[-1] # 建筑结构
href = li.css('.title a::attr(href)').get() # 详情页
dit = {
'标题': title,
'小区': area_1,
'区域': area_2,
'总价': totalPrice,
'单价': unitPrice,