简单来说,爬虫就是通过程序自动抓取网页信息的技术。当你右键查看网页源代码时,看到的 HTML 结构就是爬虫工作的对象。本文将以 Python 为例,从零开始讲解如何编写一个稳定的爬虫程序。
一、爬虫的基本流程
无论复杂的爬虫架构如何,核心逻辑通常包含三步:
- 发送请求:向目标网页发起 HTTP 请求,获取原始内容。
- 解析网页:从返回的 HTML 或 JSON 数据中提取关键信息。
- 保存数据:将提取到的信息存储到本地文件或数据库中。
二、常用工具库
在 Python 生态中,有几个库是开发爬虫时的标配:
- requests:处理网络请求,获取网页内容。
- BeautifulSoup:解析 HTML 文档,快速定位标签和数据。
- Selenium:模拟浏览器行为,用于处理动态加载的内容。
- Scrapy:强大的爬虫框架,适合大规模数据采集。
安装依赖
首先确保安装了必要的库。推荐使用国内镜像源加速下载:
pip install requests beautifulsoup4 selenium scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
三、静态页面爬虫实战
我们以百度首页为例,演示最基础的抓取流程。
1. 获取网页源码
使用 requests 库发送 GET 请求。为了模拟真实浏览器访问,建议添加 User-Agent 请求头。
import requests
url = 'https://www.baidu.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
print(response.text)
这里的关键在于 response.text,它包含了服务器返回的完整 HTML 字符串。
2. 解析标题与链接
拿到 HTML 后,用 BeautifulSoup 进行解析。我们可以轻松提取页面标题和所有超链接。
from bs4 import BeautifulSoup
# 初始化解析器
soup = BeautifulSoup(response.text, 'html.parser')
# 获取标题
title = soup.title.text
print(f'网页标题:{title}')
# 提取所有链接
links = soup.find_all('a')
for link in links:
href = link.get('href')
href:
(href)


