用深度学习提升DOM解析——自动提取页面关键区块

爬虫代理

一、时间轴:一次“抓不到重点”的二手车数据爬虫事故

  • 2025/03/18 09:00
    产品经理希望抓取懂车帝平台上“北京地区二手车报价”作为竞品监测数据源。我们初步使用传统XPath方案,试图提取车型、年限、里程、价格等数据。
  • 2025/03/18 10:00
    初版脚本运行失败,返回的数据全是空值,XPath定位的路径在页面中根本不存在。
  • 2025/03/18 11:00
    检查HTML源代码发现,页面由**前端异步渲染(JavaScript动态生成)**构建,传统静态DOM无法解析真实内容。
  • 2025/03/18 14:00
    改用Playwright模拟浏览器渲染,成功获取完整DOM。但新的问题是:页面结构复杂、不稳定,多个汽车列表卡片并非结构统一,手动XPath依旧容易出错。
  • 2025/03/19 10:00
    启动深度学习方案:利用预训练模型BERT对HTML做块级语义识别,自动提取“车卡片”结构与核心字段。

二、方案分析:XPath失效 vs 语义块提取

1. 初始方案失败原因

  • 页面为前端渲染(SPA架构),传统的requests + XPath方案根本无法加载数据;
  • 即使用Playwright动态渲染后获取HTML,汽车信息DOM结构依旧不稳定,嵌套层级深,XPath脆弱;
  • 页面存在部分反爬机制(navigator.webdriver特征、IP频控、UA检测),需解决隐藏身份问题。

2. 深度学习方案构思

  • 将完整HTML节点转为token序列(含标签结构+文本);
  • 使用BERT或LayoutLM模型对DOM节点进行语义分类,标注“车卡片”、“车型名”、“报价”等字段;
  • 利用位置+标签结构配合抽取规则,提高抗变动能力;
  • 构建领域微调训练样本,通过正则与标注相结合构建少量训练集。

三、架构改进方案:深度语义解析 + 隐身身份访问

以下是优化后的爬虫架构,融合了:

  • Playwright动态渲染页面
  • 代理IP隐藏身份(爬虫代理)
  • 设置cookie与user-agent
  • 调用深度学习模块提取语义块

✅ 示例代码如下:

import asyncio
from playwright.async_api import async_playwright
import base64
import json
import torch
from transformers import BertTokenizer, BertForTokenClassification
from typing import List

# === 亿牛云代理配置 www.16yun.cn ===
PROXY_SERVER = "http://proxy.16yun.cn:3100"
PROXY_USERNAME = "16YUN"
PROXY_PASSWORD = "16IP"

<
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值