跳至内容

爬虫简介

网络爬虫(Web Crawler)是通过程序模拟浏览器行为,自动从互联网抓取数据的工具。Python 因其丰富的生态(requests、BeautifulSoup、Scrapy 等)成为爬虫开发的首选语言。

什么是爬虫

浏览器访问网页的本质是向服务器发起 HTTP 请求,获取 HTML/JSON 响应后渲染展示。爬虫就是用程序复现这个过程:

  1. 发起 HTTP 请求(模拟浏览器)
  2. 获取响应内容(HTML、JSON、图片等)
  3. 解析内容,提取目标数据
  4. 存储数据(文件、数据库等)

爬虫的分类

类型特点适用场景
通用爬虫爬取整张页面的全部内容搜索引擎索引(Googlebot 等)
聚焦爬虫只提取页面中指定的局部数据价格监控、新闻采集
增量式爬虫只爬取网站新增或更新的数据新闻资讯、电商动态
分布式爬虫多台机器协同,海量数据并行爬取大规模数据采集(Scrapy-Redis)

聚焦爬虫通常建立在通用爬虫之上:先获取完整页面,再从中提取需要的字段。

爬虫的合法性

使用爬虫需要注意以下原则:

  • 遵守 robots.txt:检查目标网站根目录的 robots.txt 文件,了解哪些路径禁止爬取。
  • 不影响正常服务:控制请求频率,避免对服务器造成过大压力(类 DDoS 行为违法)。
  • 数据合规使用:不爬取、传播侵权内容(用户隐私、版权内容等)。
  • 商业用途需授权:将爬取数据用于商业目的,应事先获得网站授权。
爬虫程序若导致对方服务器无法正常提供服务,或爬取涉及个人隐私、商业机密的数据,可能触犯《网络安全法》《数据安全法》等法规。

反爬与反反爬

网站通常会设置反爬机制来阻止爬虫,而爬虫则需要对应的反反爬策略

反爬手段说明应对策略
User-Agent 检测识别非浏览器请求头伪造 User-Agent
IP 限速 / 封禁限制单 IP 请求频率随机延时 + 代理 IP 池
Cookie / Session需要登录态模拟登录,维护 Session
验证码人机识别打码平台 / AI 识别
JS 渲染数据由 JS 动态生成Selenium / Playwright
数据加密接口参数签名逆向分析加密算法

典型工作流

import requests
from bs4 import BeautifulSoup

url = "https://books.toscrape.com/"
headers = {"User-Agent": "Mozilla/5.0 (compatible; MyBot/1.0)"}

resp = requests.get(url, headers=headers, timeout=10)
resp.raise_for_status()

soup = BeautifulSoup(resp.text, "html.parser")

for article in soup.select("article.product_pod"):
    title = article.h3.a["title"]
    price = article.select_one(".price_color").text
    print(f"{title}: {price}")

这个示例展示了爬虫的基本三步:请求 → 解析 → 提取。后续章节将分别深入讲解各个环节。

最后更新于