登录
首页 >  文章 >  python教程

Python爬虫抓取表格数据方法

时间:2025-12-15 13:02:48 457浏览 收藏

推广推荐
免费电影APP ➜
支持 PC / 移动端,安全直达

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《Python爬虫如何抓取表格数据》,很明显是关于文章的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

抓取网页表格数据需根据页面类型选择方法:静态页面可用requests+BeautifulSoup解析HTML,或pandas.read_html直接读取;动态内容则用Selenium模拟浏览器加载,再提取表格并清洗保存为CSV。

Python爬虫怎样抓取表格数据_Python爬虫提取网页中表格数据的实用方法

抓取网页中的表格数据是Python爬虫常见的任务之一。很多网站以HTML表格(table标签)形式展示结构化信息,比如股票行情、课程表、商品价格等。使用Python可以高效提取这些数据并保存为CSV或Excel格式,便于后续分析。

1. 使用BeautifulSoup解析HTML表格

BeautifulSoup是Python中常用的HTML解析库,适合提取页面中的tabletrtd等标签内容。

基本步骤如下:

  • 用requests获取网页源码
  • 用BeautifulSoup解析HTML
  • 查找所有table标签,选择目标表格
  • 遍历行(tr)和单元格(tdth)提取文本
示例代码:
import requests
from bs4 import BeautifulSoup
<p>url = '<a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyero6Kn83GjHPXkraZo5qYYKbFeXaiv4xpY5GRi6exu7igjZ-v0a2tfs6B3LKkkrqBZK92gqC0jYqbfaN-a77Qs7GDhp6as3uG3oaVsbOFmIVhu6yKnrSKdW0' rel='nofollow'>https://example.com/page-with-table</a>'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')</p><p>table = soup.find('table')  # 可根据class或id更精确选择
data = []
for row in table.find_all('tr'):
cols = row.find_all(['td', 'th'])
data.append([col.get_text(strip=True) for col in cols])</p><h1>data 现在是一个二维列表,可写入CSV</h1><p></p>

2. 使用pandas直接读取表格(适用于简单场景)

如果网页中的表格结构清晰,pandas的read_html()函数能自动识别并提取所有表格,非常方便。

  • 无需手动解析HTML标签
  • 直接返回DataFrame列表
  • 适合静态页面且表格不多的情况
示例代码:
import pandas as pd
<p>url = '<a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyero6Kn83GjHPXkraZo5qYYKbFZJyoyICwnHyRi6C-0N6kfauEz62tf8-St7VthaqCnLGGgp-yo31jiaaGsbS3zW2DeYzfsmZ-3oWVuWqR4IqasYNtcQ' rel='nofollow'>https://example.com/simple-table</a>'
tables = pd.read_html(url)  # 返回一个包含所有表格的列表
df = tables[0]  # 取第一个表格
print(df.head())
</p>

3. 处理动态加载的表格(JavaScript渲染)

有些网页表格由JavaScript动态生成,requests无法获取完整HTML。这时需要使用Selenium模拟浏览器操作。

  • 启动浏览器驱动(如ChromeDriver)
  • 访问页面并等待表格加载完成
  • 再用BeautifulSoup或Selenium自身方法提取数据
示例代码片段:
from selenium import webdriver
from bs4 import BeautifulSoup
import time
<p>driver = webdriver.Chrome()
driver.get('<a target='_blank'  href='https://www.17golang.com/gourl/?redirect=MDAwMDAwMDAwML57hpSHp6VpkrqbYLx2eayza4KafaOkbLS3zqSBrJvPsa5_0Ia6sWuR4Juaq6t9nq5roGCUgXuytMyero6Kn83GjHPXkraZo5qYYKa8epypvpBpoImyami-urCrjoWEz62tfs6Sqrlph6pxYLyGm2S_fYGofmuDorLN0WyDhp_Rsa6VzoXdsqWGvX1iu6ybcQ' rel='nofollow'>https://example.com/dynamic-table</a>')
time.sleep(3)  # 等待JS加载</p><p>soup = BeautifulSoup(driver.page_source, 'html.parser')
table = soup.find('table')</p><h1>后续提取逻辑同BeautifulSoup</h1><p>driver.quit()
</p>

4. 数据清洗与保存

提取后的表格数据常含有多余空格、换行或缺失值,建议进行简单清洗。

  • 去除空白字符:使用strip()
  • 处理合并单元格:注意rowspan/colspan逻辑
  • 保存为CSV:用csv模块或pandas的to_csv()
保存示例:
import csv
<p>with open('table_data.csv', 'w', encoding='utf-8', newline='') as f:
writer = csv.writer(f)
writer.writerows(data)
</p>

基本上就这些。根据网页情况选择合适的方法,静态页面优先用requests+BeautifulSoup或pandas,动态内容上Selenium。关键在于准确定位表格结构,并稳定提取文本内容。

理论要掌握,实操不能落!以上关于《Python爬虫抓取表格数据方法》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>