希望提供帮助?以下是您的选择:","Crunchbase","关于我们","感谢大家的大力支持!","快速链接","联属会员计划","高级","ProxyScrape 高级试用","代理类型","代理国家","代理用例","重要","Cookie 政策","免责声明","隐私政策","条款和条件","社交媒体","在 Facebook 上","LinkedIn","推特","Quora","电报","不和谐音","\n © Copyright 2025 -Thib BV| Brugstraat 18 | 2812 Mechelen | Belgium | VAT BE 0749 716 760\n"]}
对于 Python 开发人员、数据分析师和任何从事数据集工作的人来说,网络搜刮已成为一项重要技能。说到结构化和丰富的数据,网站上的表格往往是信息的金矿。无论您是在网上搜索产品目录、体育统计数据还是财务数据,使用 Python 提取和保存表格数据的能力都是一种无价的工具。
这本实用指南将带你一步步完成使用 Python 从网站上刮擦表格的过程。到最后,您将知道如何使用requests、Beautiful Soup 甚至pandas等流行库访问表格数据,并将其存储为CSV 文件等可重复使用的格式。
在我们进入技术细节之前,先来了解一下您需要了解的内容:
我们将使用pip 命令来安装所需的库。只需在终端运行以下命令即可完成安装:
pipinstall requestsbeautifulsoup4 pandas
任何网络刮擦项目的第一步都是分析目标网站的结构。在本示例中,我们将从一个示例网站中抓取数据,该网站有一个显示曲棍球队排名的表格。下面是表格的预览:
下面是该表格在HTML 结构中的显示方式。
第一步是获取要抓取的网页。我们将使用请求库发送 HTTP 请求,并从我们用来获取表格内容的虚拟网站中获取 HTML 内容
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
在 HTML 中,表格是以行和列的形式呈现数据的一种结构化方式,就像电子表格一样。创建表格使用 <table>
标签,其内容分为行 (<tr>
)和细胞(<td>
数据单元格或 <th>
用于标题单元格)。下面是表格结构工作原理的简要说明:
<table>
标记,它是所有行和单元格的容器。<tr>
(表格行)代表表格的一个水平切片。<td>
标记保存单个数据值(或 <th>
标头的标记)。 例如,在本脚本中,我们找到了 <table>
标记的特定类别 (class="table"
),并使用 美丽汤.这样我们就可以系统地提取数据,为分析或保存数据做好准备。
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
在这一步中,我们将把提取的表格数据保存到CSV 文件中,以备将来使用,同时还将其显示为 pandas DataFrame,以便查看数据的结构。将数据保存为 CSV 文件后,您就可以在Excel、Google Sheets 或Python等工具中对其进行分析。
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(f"Data saved to {csv_filename}")
运行这段代码时,pandas 会创建一个名为 scraped_table_data.csv
在你的工作目录中,提取的数据将打印在控制台中,如下所示:
队名年份 胜负加时赛 输球 胜率 进球数 (GF) 失球数 (GA) + / -
0波士顿棕熊队1990 44 24 0.55 299 264 35
1水牛城军刀队1990 年 31 30 0.388 292 278 14
2卡尔加里火焰队1990 年 46 26 0.575 344 263 81
3芝加哥黑鹰队1990 49 23 0.613 284 211 73
4底特律红翼队1990 34 38 0.425 273 298 -25
下面是完整的 Python 脚本,用于从网站上抓取表格数据、保存到 CSV 文件并显示提取的数据。该脚本将本指南中涉及的所有步骤整合为一个完整的工作流程。
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = "https://www.scrapethissite.com/pages/forms/"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
html_content = response.text
else:
print(f"Failed to fetch the page. Status code: {response.status_code}")
exit()
soup = BeautifulSoup(html_content, "html.parser")
table = soup.find("table", {"class": "table"})
if not table:
print("No table found on the page!")
exit()
headers = [header.text.strip() for header in table.find_all("th")]
rows = []
for row in table.find_all("tr", class_="team"):
cells = [cell.text.strip() for cell in row.find_all("td")]
rows.append(cells)
df = pd.DataFrame(rows, columns=headers)
csv_filename = "scraped_table_data_pandas.csv"
df.to_csv(csv_filename, index=False, encoding="utf-8")
print(df.head())
print(f"Data saved to {csv_filename}")
本指南将一步步引导您完成这一过程:了解网站结构、提取数据并保存数据以供分析。无论您是为研究建立数据集、自动收集数据,还是仅仅探索网络刮擦的可能性,掌握这些技术都将为您带来无限商机。
在刮擦时,您可能会遇到网站设置的 IP 禁止或速率限制等挑战。这时,代理就变得至关重要。代理可以让你
ProxyScrape提供各种代理服务器,包括 住宅代理服务器、 高级代理服务器、 专用代理服务器和 移动代理服务器, 专为网络搜刮量身定制。他们可靠且可扩展的代理解决方案可帮助您无中断地处理大型搜索项目,确保顺利高效地收集数据。