爬虫入门指南:从基础到实战案例解析

一、爬虫相关介绍

1.1 什么是爬虫?

爬虫(Web Crawler)是通过编写程序模拟浏览器行为,自动抓取互联网数据的核心技术。其核心原理分为两个关键点:

  1. 模拟浏览器行为:现代浏览器本质是天然爬虫工具,爬虫程序通过HTTP协议模拟浏览器请求
  2. 数据抓取策略
    • 全量抓取:获取页面全部内容
    • 精准抓取:提取指定数据片段

常见问题:当爬虫无法获取目标数据时,90%的情况是浏览器行为模拟不足导致的请求特征异常。

1.2 爬虫应用分类

分类 特点 应用场景
通用爬虫 抓取全站页面源码 搜索引擎索引
聚焦爬虫 提取页面指定数据 垂直领域数据采集

1.3 反爬与反反爬攻防

graph LR A[网站反爬机制] --> B(请求频率限制) A --> C(验证码校验) A --> D(UA检测) A --> E(IP封禁) F[爬虫应对策略] --> G(代理IP池) F --> H(验证码识别) F --> I(请求头伪装) F --> J(请求速率控制)

二、Requests库实战指南

2.1 环境配置

pip install requests

2.2 核心工作流

import requests

# 1.目标URL定义
target_url = "https://www.example.com"

# 2.发送HTTP请求
response = requests.get(url=target_url)

# 3.获取响应内容
html_content = response.text  # 文本形式
binary_data = response.content  # 二进制形式

# 4.数据持久化
with open("output.html", "w", encoding="utf-8") as f:
    f.write(html_content)

2.3 常见问题处理

中文乱码解决方案

response.encoding = 'utf-8'  # 手动指定编码
# 或根据响应头自动检测
response.encoding = response.apparent_encoding

UA伪装实战

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36..."
}
response = requests.get(url, headers=headers)

三、经典案例剖析

3.1 动态数据加载处理

智慧职教专业数据抓取流程

  1. 打开Chrome开发者工具(F12)
  2. 定位XHR类型请求
  3. 分析请求参数规律
  4. 模拟分页请求
import requests
import time

for page in range(1, 6):
    url = f"https://www.icve.com.cn/portal/course/getNewCourseInfo?page={page}"
    headers = {
        "Referer": "https://www.icve.com.cn/portal_new/course/course.html",
        "User-Agent": "Mozilla/5.0..." 
    }
    response = requests.post(url, headers=headers)
    data = response.json()
    # 解析JSON数据...
    time.sleep(1)  # 请求间隔

3.2 图片批量下载

# 方式1:使用requests
response = requests.get(img_url)
with open("image.jpg", "wb") as f:
    f.write(response.content)

# 方式2:使用urllib
from urllib.request import urlretrieve
urlretrieve(img_url, "image.jpg")

四、项目实战作业

作业1:肯德基门店数据采集

# 核心请求参数示例
data = {
    "cname": "",
    "pid": "",
    "keyword": "上海",
    "pageIndex": 1,
    "pageSize": 10
}

作业2:下厨房菜谱抓取

# 搜索请求示例
params = {
    "keyword": "宫保鸡丁",
    "cat": 1001
}

五、爬虫伦理与规范

  1. 遵守robots.txt协议
  2. 设置合理请求间隔(建议≥1秒)
  3. 禁止抓取敏感数据
  4. 尊重网站版权声明

提示:本文所有案例仅供学习参考,实际应用中请遵守目标网站的服务条款。

通过系统学习本文内容,读者可掌握基础的网络爬虫开发能力。爬虫技术需要持续实践,建议从公开API接口开始练习,逐步过渡到复杂网站的数据采集。记得在实战中多使用开发者工具分析网络请求,这是破解动态加载数据的关键。

posted @ 2025-03-23 15:36  千陌666  阅读(347)  评论(0)    收藏  举报