0

0

Python怎么爬取并分析数据_网络爬虫数据入库清洗与Pandas全链路

P粉602998670

P粉602998670

发布时间:2026-03-19 12:38:01

|

698人浏览过

|

来源于php中文网

原创

pd.DataFrame读取爬虫数据报错,因HTML表格含空行、合并单元格、嵌套标签或JS渲染内容,导致read_html解析失败;需手动定位表格、清洗空行与异常字符、鲁棒转换数值、显式指定SQL字段类型,并添加全流程校验与日志。

python怎么爬取并分析数据_网络爬虫数据入库清洗与pandas全链路

requests + BeautifulSoup 爬下来的数据,为什么 pd.DataFrame 一读就报错?

因为爬到的 HTML 表格里常混着空行、合并单元格、嵌套 <div>、甚至 JS 渲染内容——pd.read_html() 默认只认干净的 <table> 结构,遇到 <tr><td> 或属性不全,直接抛 ValueError: No tables found 或列对不齐。

  • 先用 response.text 打印原始 HTML 片段,确认目标表格是否真在源码里(防 JS 渲染)
  • soup.find('table', {'class': 'data-table'}) 显式定位,别依赖 pd.read_html(url) 直接拉
  • 提取时统一用 [row.find_all(['td', 'th']) for row in soup.find_all('tr')],再手动过滤空行和表头重复行
  • 列名含换行或空格?用 [x.get_text(strip=True) for x in headers] 清一遍,再 df.columns = [...]

清洗阶段 df['price'].str.replace('¥', '').astype(float)ValueError: could not convert string to float

价格字段里藏着“暂无报价”、“面议”、“—”、“ ”,甚至隐藏 Unicode 空格(\xa0),str.replace() 没法一锅端。

  • 先跑 df['price'].apply(type).unique() 看有没有 float 混入(NaN 会变 float,干扰判断)
  • df['price'].str.replace(r'[^\d.]', '', regex=True) 只留数字和小数点,比逐个 replace 更鲁棒
  • 转换前加 df['price'] = df['price'].replace('', np.nan),再 pd.to_numeric(..., errors='coerce'),把异常值转为 NaN 而非中断
  • 别忘了 df.dropna(subset=['price']) 是最后一步,不是清洗第一步——中间步骤要保留 NaN 做标记

入库 MySQL 时 df.to_sql() 卡住或丢数据

to_sql 默认用 if_exists='fail',表存在就报错;设成 'replace' 又会清空整张表;设成 'append' 却可能因主键冲突静默失败,尤其字段类型没对齐时。

  • 建表别全靠 to_sql 自动推断:price 字段它可能建为 TEXT,后续 WHERE price > 100 就走不了索引
  • 显式传 dtype={'price': sqlalchemy.Float(), 'title': sqlalchemy.String(200)},和数据库实际类型对齐
  • 主键/唯一约束字段(如 item_id)入库前先 df.drop_duplicates(subset=['item_id'], keep='last'),避免 IntegrityError
  • 大数据量别单次 to_sql:用 chunksize=500 分批,配合 method='multi' 减少 SQL 请求次数

爬虫+清洗+入库连跑,第二天发现数据全乱了

网站前端微调一个 class 名、后端接口加个 referer 校验、甚至反爬返回 200 但 HTML 里塞满占位符——这些变化不会报错,只会让 BeautifulSoup 提取空列表、pd.to_numeric 全转成 NaN、入库时字段全 NULL。

Boba.video
Boba.video

AI动漫视频生成器

下载

立即学习Python免费学习笔记(深入)”;

  • 每次运行前加校验:比如 assert len(df) > 10assert df['title'].nunique() / len(df) > 0.8(去重率太低说明标题全抓成“暂无”)
  • 把关键抽取逻辑封装成函数,例如 extract_price(soup),函数内加 logging.warning(f'Price empty in {url}')
  • 不要复用 session 对象跨天跑:Cookie 过期、token 失效后请求仍返回 200,但内容已失效
  • 最保险的是存一份原始 HTML 快照(按日期命名目录),出问题时能立刻对比是解析逻辑崩了,还是源站变了

链路越长,中间某个环节静默失败的概率越高。别信“跑通一次就稳了”,得让每步都留下可验证的痕迹。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

781

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

697

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

784

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

890

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1564

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

598

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

591

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

759

2023.08.11

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

22

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号