爬取不到数据排查指南
AI-摘要
阿狄 GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
爬取不到数据排查指南
常见原因与解决方案
原因 1:数据异步加载(最常见 - 占 70%)
现象
- 采集规则配置正确,但采集到的数据为空或不完整
- 在浏览器中能看到数据,但采集工具采不到
- 页面加载时有加载动画或"加载中..."提示
解决方案
- 在"提取数据"或"循环列表"步骤中添加等待
- 右键 → 高级选项 → 设置"执行前等待":2-5 秒
- 或设置"等待元素出现",填入数据容器 XPath
原因 2:XPath 定位错误(占 20%)
现象
- 采集规则中的 XPath 在浏览器中能找到元素
- 但采集时显示"未找到"或采集到错误的数据
- 不同页面的源代码格式不一样
解决方案
- 修改 XPath 为相对定位:
//ul[@id='list']//li而非/html/body/div[3]/div[2]/ul/li[5] - 使用文本锚点:
//a[normalize-space()='目标文本'] - 使用 contains():
//div[contains(@class, 'item')] - 设置备选 XPath(在字段定位中添加多个选项)
原因 3:IP 被封禁(占 5%)
现象
- 采集开始正常,采集几页后突然无法获取数据
- 返回 403 或 429 错误
- 浏览器访问该网站也被拒绝
解决方案
- 降低采集速度:每个请求间隔 2-5 秒
- 更换 IP:使用代理 IP 或 VPN
- 等待 24 小时后重试
原因 4:网页中本身没有数据(占 3%)
现象
- 采集规则配置正确,但采集结果为空
- 在浏览器中也看不到数据
解决方案
- 按 F12 打开开发者工具,查看网页源代码
- 搜索目标数据是否存在于 HTML 中
- 检查是否需要切换页面或修改搜索条件
原因 5:元素在 iframe 中(占 2%)
现象
- XPath 在浏览器中能找到元素
- 采集工具始终报"未找到元素"
解决方案
- 在浏览器 F12 中搜索
<iframe,查看目标元素是否在 iframe 内 - 修改 XPath 包含 iframe:
//iframe[@id='content']//div[@class='data']
排查顺序(按优先级)
| 步骤 | 检查项 | 操作 | 结果 |
|---|---|---|---|
| 1 | 异步加载 | Network 查看 XHR 请求;添加 2-5 秒等待 | 解决 |
| 2 | XPath 正确性 | 浏览器 Console 输入 $x("XPath") 测试 | 解决 |
| 3 | 网页有数据 | F12 查看源代码,搜索关键词 | 解决 |
| 4 | iframe 检查 | F12 搜索 <iframe,修改 XPath | 解决 |
| 5 | IP 被封 | 观察是否返回 403 错误,更换 IP | 解决 |
快速调试命令
浏览器 F12 Console
// 测试 XPath
$x("//div[@class='item']")
// 获取元素文本
$x("//div[@class='item']")[0].textContent
// 查看元素数量
$x("//div[@class='item']").length
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小刘
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果