网
网络爬虫引擎
作者:鹿Sir开发工具v3
网络爬虫与数据提取引擎,支持网页数据抓取、解析、清洗和结构化输出。 适用场景:(1) 网页数据采集与提取 (2) 列表页/详情页批量抓取 (3) 动态页面数据获取 (4) 数据清洗与结构化处理 (5) 定时采集任务配置。 触发词:"爬虫"、"抓取"、"数据采集"、"网页提取"、"web scraping"、"爬取"、"数据抓取"、"批量采集"。
下载量
349
点赞
87
价格
¥1.99
精选
技能文档
---
name: afrexai-web-scraping-engine
description: >
网络爬虫与数据提取引擎,支持网页数据抓取、解析、清洗和结构化输出。
适用场景:(1) 网页数据采集与提取 (2) 列表页/详情页批量抓取
(3) 动态页面数据获取 (4) 数据清洗与结构化处理 (5) 定时采集任务配置。
触发词:"爬虫"、"抓取"、"数据采集"、"网页提取"、"web scraping"、"爬取"、"数据抓取"、"批量采集"。
title: 网络爬虫引擎
category: 开发工具
---
# 网络爬虫引擎
## 概述
通用的网络数据采集引擎,支持静态页面和动态渲染页面的数据抓取,提供从数据采集到结构化输出的完整解决方案。
## 核心能力
### 1. 页面数据采集
**支持类型:**
- 静态HTML页面(requests + BeautifulSoup)
- 动态渲染页面(Playwright/Selenium)
- API接口数据(JSON/XML响应)
- 分页/滚动加载数据
**采集策略:**
```
单页采集:
1. 发送请求 → 2. 解析内容 → 3. 提取数据 → 4. 存储结果
批量采集:
1. 列表页遍历 → 2. 详情页进入 → 3. 数据提取 → 4. 翻页处理
动态页面:
1. 启动浏览器 → 2. 等待渲染 → 3. 提取DOM → 4. 解析数据
```
### 2. 数据解析
**解析方法:**
| 方法 | 适用场景 | 工具 |
|------|----------|------|
| CSS选择器 | 有明确class/id | BeautifulSoup |
| XPath | 复杂路径定位 | lxml |
| 正则表达式 | 文本模式匹配 | re |
| JSON解析 | API返回数据 | json/jq |
| 表格解析 | HTML表格数据 | pandas |
### 3. 反爬应对
**常见反爬及对策:**
| 反爬手段 | 应对方案 |
|----------|----------|
| User-Agent检测 | 随机UA轮换 |
| IP限制 | 代理池轮换 |
| 频率限制 | 请求间隔随机化 |
| 验证码 | 识别或人工介入 |
| Cookie验证 | Session保持 |
| JS加密 | 逆向分析或浏览器渲染 |
| 动态Token | 页面解析获取 |
### 4. 数据清洗
**清洗流程:**
1. 去重(基于唯一标识字段)
2. 空值处理(填充/删除/标记)
3. 格式统一(日期、数字、编码)
4. 异常值处理(范围检查、类型检查)
5. 字段标准化(命名统一、单位统一)
### 5. 输出格式
支持多种结构化输出:
```
JSON:[{"field1": "value1", ...}, ...]
CSV:表头 + 数据行
Excel:带格式的工作表
Markdown:表格格式
数据库:SQL INSERT语句
```
## 代码模板
### 基础采集脚本
```python
import requests
from bs4 import BeautifulSoup
def scrape(url):
headers = {"User-Agent": "Mozilla/5.0..."}
resp = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(resp.text, "html.parser")
items = soup.select(".item-class")
results = []
for item in items:
results.append({
"title": item.select_one(".title").text.strip(),
"link": item.select_one("a")["href"],
})
return results
```
### 动态页面采集
```python
from playwright.sync_api import sync_playwright
def scrape_dynamic(url):
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto(url, wait_until="networkidle")
items = page.query_selector_all(".item-class")
results = []
for item in items:
results.append({
"title": item.query_selector(".title").inner_text(),
})
browser.close()
return results
```
## 合规要求
- 遵守robots.txt协议
- 控制请求频率,不影响目标站点
- 不采集个人隐私数据
- 遵守数据使用相关法律法规
- 注明数据来源
## 原则
- 合规采集:遵守网站使用条款和法律法规
- 容错健壮:网络异常、页面变化时有兜底
- 高效稳定:合理使用并发和缓存
- 数据质量:确保采集数据准确完整支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手