当前位置: 首页 > news >正文

Pandas在爬虫中的应用:快速清洗和存储表格数据

爬虫代理

在数据分析和爬虫领域,Pandas 是一个功能强大的库,广泛用于数据清洗、处理和存储。结合爬虫技术,Pandas 能有效地处理从网页抓取的表格数据,进行清洗和存储。

关键数据分析

在本案例中,我们将以 贝壳网(www.ke.com) 上的上海二手房信息为例,演示如何使用 Pandas 进行数据清洗和存储。目标是获取楼盘名称、价格等信息,并进行房价分析。

1. 数据采集

首先,我们需要从贝壳网获取上海二手房的楼盘和价格信息。由于贝壳网可能有反爬虫机制,直接请求可能会被封禁。因此,我们需要设置爬虫代理 IP、User-Agent 和 Cookie 来模拟正常用户访问。

import requests
import pandas as pd
from fake_useragent import UserAgent

# 设置代理 IP(以亿牛云爬虫代理为例 www.16yun.cn)
proxies = {
    'http': 'http://16YUN:16IP@proxy.16yun.cn:8080',# 以实际代理信息替换
    'https': 'http://16YUN:16IP@proxy.16yun.cn:8080',# 以实际代理信息替换
}

# 设置请求头
ua = UserAgent()
headers = {
    'User-Agent': ua.random,
    'Cookie': 'your_cookie_here',  # 请替换为实际的 Cookie
}

# 目标 URL
url = 'https://sh.ke.com/ershoufang/'

# 发送请求
response = requests.get(url, headers=headers, proxies=proxies)
response.encoding = 'utf-8'

# 检查请求是否成功
if response.status_code == 200:
    print("请求成功")
else:
    print(f"请求失败,状态码:{response.status_code}")

2. 数据解析

贝壳网的二手房信息通常以表格形式呈现。我们可以使用 Pandas 的 read_html 函数直接读取网页中的表格数据。需要注意的是,read_html 需要安装 lxml 库。

# 读取网页中的所有表格
tables = pd.read_html(response.text)

# 打印所有表格的数量
print(f"共找到 {len(tables)} 个表格")

# 假设我们需要第一个表格
df = tables[0]

# 查看前5行数据
print(df.head())

3. 数据清洗

获取到数据后,通常需要进行清洗,如去除重复值、处理缺失值、转换数据类型等。以下是一些常见的数据清洗操作:

# 去除重复行
df = df.drop_duplicates()

# 处理缺失值(例如,填充缺失值)
df = df.fillna('未知')

# 转换数据类型(例如,将价格列转换为数值类型)
df['价格'] = pd.to_numeric(df['价格'], errors='coerce')

# 删除包含缺失值的行
df = df.dropna()

# 重命名列
df = df.rename(columns={'旧列名': '新列名'})

# 查看清洗后的数据
print(df.head())

4. 数据存储

清洗后的数据可以存储为 Excel 文件,方便后续分析。Pandas 提供了 to_excel 函数来实现这一功能。

# 存储为 Excel 文件
df.to_excel('shanghai_ershoufang.xlsx', index=False)

代码演变模式可视化

在实际应用中,爬虫代码可能需要多次迭代和优化。以下是代码演变的一个示例流程:

  1. 初始版本:直接请求网页并解析表格数据。
  2. 添加代理:为应对反爬虫机制,添加爬虫代理 IP、User-Agent 和 Cookie。
  3. 数据清洗:去除重复值、处理缺失值、转换数据类型等。
  4. 数据存储:将清洗后的数据存储为 Excel 文件。

每个步骤的代码都在前面的示例中有所体现。

创意点:技术关系图谱

在爬虫项目中,涉及多个技术组件和库。以下是一个简单的技术关系图谱,展示了各个组件之间的关系:

+------------------+       +------------------+       +------------------+
|   Requests       | <---> |   BeautifulSoup  | <---> |   Pandas         |
|  (发送请求)      |       |  (解析网页)      |       |  (数据清洗)      |
+------------------+       +------------------+       +------------------+
        |                        |                        |
        v                        v                        v
+------------------+       +------------------+       +------------------+
|   User-Agent     |       |   Proxy IP       |       |   Excel          |
|  (伪装身份)      |       |  (代理访问)      |       |  (存储数据)      |
+------------------+       +------------------+       +------------------+

在实际项目中,可能还会涉及其他技术,如数据库存储、数据可视化等。根据项目需求,可以扩展和调整技术栈。

总结

结合 Pandas 和爬虫技术,可以高效地获取、清洗和存储网页中的表格数据。通过合理设置爬虫代理、User-Agent 和 Cookie,可以有效应对反爬虫机制。数据清洗是数据分析中至关重要的一步,Pandas 提供了丰富的功能来处理各种数据清洗任务。

相关文章:

  • 【北京迅为】itop-3568 开发板openharmony鸿蒙烧写及测试-第2章OpenHarmony v3.2-Beta4版本测试
  • js逆向常用代码
  • 使用 Polars 进行人工智能医疗数据分析(ICU数据基本测试篇)
  • 毛泽东思想“活的灵魂”
  • 黑马Java面试教程_P5_微服务
  • ISO 15118,最新版,汽车充电桩相关标准,1~22子标准
  • Postman 11.34 最新版安装与API测试入门教程(Windows平台)
  • 释放 Cursor 的全部潜能:快速生成智能 Cursor Rules
  • Linux中子线程会继承父线程对相关变量的可见性
  • redis --- 相关基础知识整理
  • RNN,LSTM,GRU三种循环网络的对比
  • 解决单元测试 mock final类报错
  • 盛京开源社区加入 GitCode,书写东北开源生态新篇章
  • 深入理解Java并发编程(一):揭秘并发性能优化的底层机制
  • 想转行做春晚那种扭秧歌的机器人,大概要会点什么?
  • 【SpringBoot】论坛项目中如何进行实现发布文章,以及更新对应数据库的数据更新
  • CCNA Started
  • 【MySQL学习】关系数据库标准语言SQL
  • 批量接受或拒绝 Word 修订
  • 加油站小程序实战教程04类目级联选择
  • 新造古镇丨江浙沪重点打造的“水乡客厅”,古镇也能串着玩?
  • 在越剧之乡嵊州,浙江音乐学院越剧学院成立
  • 台陆委会将欧阳娜娜等20多名艺人列入重要查核对象,国台办回应
  • 中国古代文学研究专家、南开大学教授李剑国逝世
  • 国家统计局:下阶段要继续发挥宏观政策作用,促进价格合理回升
  • 特朗普指控FBI前局长“暗示刺杀总统”,“8647”藏着什么玄机?