爬虫是通过编程自动从网页获取信息的技术。简单来说,当你打开网页查看源代码时,看到的 HTML 结构就是爬虫工作的对象,它像一位机器人帮你阅读并提取这些内容。
本文将带你从零开始编写 Python 爬虫,即使是零基础也能理解核心逻辑。
一、爬虫的基本流程
整个流程可以概括为三个步骤:
- 发送请求:向目标网页发起 HTTP 请求,获取原始内容。
- 解析网页:从返回的 HTML 或 JSON 数据中提取所需信息。
- 保存数据:将提取到的数据写入文件或数据库,便于后续分析。
二、常用工具库
在 Python 生态中,开发爬虫主要依赖以下两个库:
- requests:负责发送网络请求,获取网页源码。
- BeautifulSoup:用于解析 HTML 文档,快速定位和提取标签。
安装依赖
在终端执行以下命令即可安装(推荐使用国内镜像加速):
pip install requests beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple
三、静态页面抓取实战
我们先从一个简单的例子入手,抓取百度首页的内容。
1. 获取网页源码
使用 requests 发送 GET 请求,拿到响应对象后直接读取文本。
import requests
url = 'https://www.baidu.com'
response = requests.get(url)
# 确保编码正确,避免中文乱码
response.encoding = response.apparent_encoding
print(response.text)
这里 response.text 包含了完整的 HTML 代码。实际开发中,建议设置 encoding 属性来防止中文显示异常。
2. 解析 HTML 内容
拿到源码后,用 BeautifulSoup 构建解析树,提取我们关心的数据,比如标题。
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.title.string if soup.title else ''
print(f'网页标题:{title}')
注意,soup.title.string 比 .text 更稳健,能处理一些嵌套标签的情况。
3. 批量提取链接
如果想抓取页面上的所有文章链接,可以遍历所有的 <a> 标签。
links = soup.find_all('a')
for link links:
href = link.get()
text = link.get_text(strip=)
href href.startswith():
()


