Python爬虫入门教程:从基础到实战爬取数据
发布时间:2026-04-12 | 分类:Python教程 | 阅读时长:15分钟
👀 阅读:0
前言
本文是面向Python新手的爬虫入门教程,从环境搭建、基础库使用,到实战爬取网页数据,全程使用原生Python代码实现,无复杂框架依赖。通过本文你将掌握requests请求网页、BeautifulSoup解析HTML、数据存储等核心爬虫技能,最终实现一个能爬取博客文章标题和内容的实战案例。
一、环境准备:Python与核心库安装
1. Python环境安装
首先确保本地安装了Python 3.8+版本(推荐3.10),可从Python官网下载对应系统的安装包,安装完成后通过终端/命令行验证:
python --version
# 输出 Python 3.10.12 即为正常
2. 核心爬虫库安装
本次教程需要用到两个核心库,通过pip安装:
# 安装请求库(获取网页内容)
pip install requests
# 安装解析库(解析HTML结构)
pip install beautifulsoup4
二、基础原理:爬虫的核心流程
Python爬虫的核心流程可总结为4步:
- 发送HTTP请求:向目标网站服务器发送请求,获取网页源代码
- 解析网页内容:从HTML源码中提取需要的目标数据(如标题、正文、图片)
- 数据清洗处理:对提取的原始数据去重、格式化,便于后续使用
- 数据存储:将处理后的数据保存到本地文件(如txt、csv)或数据库
三、实战第一步:请求网页并获取源码
1. 基础请求示例
使用requests库发送GET请求,获取网页源码:
import requests
# 目标网页URL(以测试博客为例)
url = "https://demo-blog.com/test-page"
# 发送请求(添加请求头模拟浏览器,避免被反爬)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
}
try:
# 发送GET请求
response = requests.get(url, headers=headers)
# 设置编码(避免中文乱码)
response.encoding = "utf-8"
# 打印网页源码
print(response.text)
except Exception as e:
print(f"请求失败:{e}")
2. 状态码判断
请求后需判断状态码,确认请求是否成功:
if response.status_code == 200:
print("请求成功!")
else:
print(f"请求失败,状态码:{response.status_code}")
四、实战第二步:解析HTML提取数据
使用BeautifulSoup解析网页源码,提取目标数据(以提取文章标题为例):
from bs4 import BeautifulSoup
# 创建BeautifulSoup对象,指定解析器
soup = BeautifulSoup(response.text, "html.parser")
# 提取文章标题(根据网页的CSS选择器定位)
# 假设标题标签为h1,class为"article-title"
title = soup.find("h1", class_="article-title").text
print(f"文章标题:{title}")
# 提取所有段落内容
paragraphs = soup.find_all("p")
content = "\n".join([p.text for p in paragraphs])
print(f"文章内容:{content}")
五、实战第三步:数据存储到本地
将提取的标题和内容保存到本地txt文件:
# 保存数据到本地
with open("爬取的文章.txt", "w", encoding="utf-8") as f:
f.write(f"标题:{title}\n\n")
f.write(f"内容:{content}")
print("数据已保存到本地文件!")
六、反爬规避与注意事项
1. 基础反爬规避技巧
- 添加请求头(User-Agent),模拟浏览器访问
- 设置请求间隔(time.sleep),避免高频请求
- 使用代理IP,分散请求来源(进阶)
2. 法律与道德规范
爬虫开发需遵守目标网站的robots.txt协议,不得爬取敏感数据、不得用于商业用途,避免因爬取行为触犯法律。
写在最后
本文仅介绍了Python爬虫的基础流程和核心用法,实际爬虫开发中还会遇到动态网页(需用Selenium/Playwright)、验证码、登录验证等复杂场景,后续会逐步更新相关进阶教程。
新手建议先从静态网页爬取练手,熟悉核心库的使用后,再尝试处理复杂场景,同时始终保持合规爬取的原则。