---
id: sm-web-scraping-automation
name: "web-scraping-automation"
url: https://skills.yangsir.net/skill/sm-web-scraping-automation
author: aaaaqwq
domain: automation
tags: ["web-scraping", "data-extraction", "automation", "python-libraries-(e.g.,-beautifulsoup,-scrapy)"]
install_count: 534
rating: 4.20 (51 reviews)
github: https://github.com/aaaaqwq/claude-code-skills
---

# web-scraping-automation

> 自动化爬取网站数据和 API 接口。当用户需要抓取网页内容、调用 API、解析数据或创建爬虫脚本时使用此技能。

**Stats**: 534 installs · 4.2/5 (51 reviews)

## Before / After 对比

### 自动化网页爬取与API调用，高效获取数据。

## Readme

# 网站爬取与 API 自动化

## 功能说明
此技能专门用于自动化网站数据爬取和 API 接口调用，包括：
- 分析和爬取网站结构
- 调用和测试 REST/GraphQL API
- 创建自动化爬虫脚本
- 数据解析和清洗
- 处理反爬虫机制
- 定时任务和数据存储

## 使用场景
- "爬取这个网站的产品信息"
- "帮我调用这个 API 并解析返回数据"
- "创建一个脚本定时抓取新闻"
- "分析这个网站的 API 接口文档"
- "绕过这个网站的反爬虫限制"

## 技术栈
### Python 爬虫
- **requests**：HTTP 请求库
- **BeautifulSoup4**：HTML 解析
- **Scrapy**：专业爬虫框架
- **Selenium**：浏览器自动化
- **Playwright**：现代浏览器自动化

### JavaScript 爬虫
- **axios**：HTTP 客户端
- **cheerio**：服务端 jQuery
- **puppeteer**：Chrome 自动化
- **node-fetch**：Fetch API

## 工作流程
1. **目标分析**：
   - 检查网站结构和数据位置
   - 分析 API 接口和认证方式
   - 评估反爬虫机制

2. **方案设计**：
   - 选择合适的技术栈
   - 设计数据提取策略
   - 规划错误处理和重试机制

3. **脚本开发**：
   - 编写爬虫代码
   - 实现数据解析逻辑
   - 添加日志和监控

4. **测试优化**：
   - 验证数据准确性
   - 优化性能和稳定性
   - 处理边界情况

## 最佳实践
- 遵守 robots.txt 规则
- 设置合理的请求间隔
- 使用 User-Agent 和请求头
- 实现错误重试机制
- 数据去重和验证
- 使用代理池（如需要）
- 保存原始数据和日志

## 常见场景示例

### 1. 简单网页爬取
```python
import requests
from bs4 import BeautifulSoup

def scrape_website(url):
    headers = {'User-Agent': 'Mozilla/5.0'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    # 提取数据
    data = []
    for item in soup.select('.product'):
        data.append({
            'title': item.select_one('.title').text,
            'price': item.select_one('.price').text
        })
    return data
```

### 2. API 调用
```python
import requests

def call_api(endpoint, params=None):
    headers = {
        'Authorization': 'Bearer YOUR_TOKEN',
        'Content-Type': 'application/json'
    }
    response = requests.get(endpoint, headers=headers, params=params)
    return response.json()
```

### 3. 动态网页爬取
```python
from selenium import webdriver
from selenium.webdriver.common.by import By

def scrape_dynamic_page(url):
    driver = webdriver.Chrome()
    driver.get(url)

    # 等待页面加载
    driver.implicitly_wait(10)

    # 提取数据
    elements = driver.find_elements(By.CLASS_NAME, 'item')
    data = [elem.text for elem in elements]

    driver.quit()
    return data
```

## 反爬虫应对策略
- **请求头伪装**：模拟真实浏览器
- **代理轮换**：使用代理池
- **验证码处理**：OCR 或第三方服务
- **Cookie 管理**：维护会话状态
- **请求频率控制**：避免触发限制
- **JavaScript 渲染**：使用 Selenium/Playwright

## 数据存储方案
- **CSV/Excel**：简单数据导出
- **JSON**：结构化数据存储
- **数据库**：MySQL、PostgreSQL、MongoDB
- **云存储**：S3、OSS
- **数据仓库**：用于大规模数据分析


---
*Source: https://skills.yangsir.net/skill/sm-web-scraping-automation*
*Markdown mirror: https://skills.yangsir.net/api/skill/sm-web-scraping-automation/markdown*