You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将BeautifulSoup爬取的网页数据存入DataFrame并保存

爬取结果存入DataFrame及持久化保存方案

前置准备

你需要额外安装pandas库用于DataFrame操作,执行以下安装命令:
pip install pandas requests beautifulsoup4
如果需要保存为Excel格式,额外安装openpyxl依赖:
pip install openpyxl

具体实现代码

你的现有代码已经完成了页面内容和字段提取,只需要将提取到的字段结构化后传入pandas生成DataFrame,再调用对应保存方法即可。考虑到单页面爬取是单条数据,以及避免标签缺失导致的报错,修改后完整代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = "https://aedownload.com/download-magazine-promo-for-element-3d-free-videohive/"
page = requests.get(url)
page.encoding = page.apparent_encoding # 自动识别页面编码,避免乱码
soup = BeautifulSoup(page.content, "html.parser")

# 提取字段时增加非空判断,避免标签不存在时报错
title = soup.find(class_="blog-title").text.strip() if soup.find(class_="blog-title") else ""
project_details = soup.find(class_="project-details").text.strip() if soup.find(class_="project-details") else ""
link_wp = soup.find(class_="wp-video-shortcode").text.strip() if soup.find(class_="wp-video-shortcode") else ""
link_infopage = soup.find(class_="infopage112").text.strip() if soup.find(class_="infopage112") else ""
project_description = soup.find(class_="Project-discription").text.strip() if soup.find(class_="Project-discription") else ""

# 将字段整理为字典格式,单条数据的值需要包裹为列表,传入后生成单行列的DataFrame
data = {
    "标题": [title],
    "项目详情": [project_details],
    "WP视频链接": [link_wp],
    "信息页链接": [link_infopage],
    "项目描述": [project_description]
}
df = pd.DataFrame(data)

# 保存为CSV格式,指定utf-8-sig编码避免Windows下Excel打开乱码,index=False不保存行索引
df.to_csv("ae资源爬取结果.csv", index=False, encoding="utf-8-sig")

# 如果需要保存为Excel格式,取消注释下面这行即可
# df.to_excel("ae资源爬取结果.xlsx", index=False)

# 打印验证结果
print(df)

多页面爬取扩展

如果后续需要爬取多个同类型页面,不要每爬一页就存一次文件,效率更低。可以按以下逻辑调整:

  • 爬取前先初始化一个空列表all_data = []
  • 每爬完一个页面,将提取到的字段整理为不带列表包裹的字典,直接append到all_data中
  • 所有页面爬取完成后,直接执行df = pd.DataFrame(all_data)即可一次性生成包含所有爬取结果的DataFrame,再统一保存

注意事项

  • 爬取时建议在请求之间加入1-3秒的随机延时,避免请求频率过高被目标站点封禁IP
  • 部分页面可能存在反爬机制,可以在requests.get中传入headers参数模拟浏览器请求,提升爬取成功率
  • 提取字段时的非空判断不要省略,站点小幅改版就可能导致某个class名变动,直接让程序中断

内容的提问来源于stack exchange,提问作者Zubair Tariq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 22:45:37