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步:

  1. 发送HTTP请求:向目标网站服务器发送请求,获取网页源代码
  2. 解析网页内容:从HTML源码中提取需要的目标数据(如标题、正文、图片)
  3. 数据清洗处理:对提取的原始数据去重、格式化,便于后续使用
  4. 数据存储:将处理后的数据保存到本地文件(如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. 基础反爬规避技巧

2. 法律与道德规范

爬虫开发需遵守目标网站的robots.txt协议,不得爬取敏感数据、不得用于商业用途,避免因爬取行为触犯法律。

写在最后

本文仅介绍了Python爬虫的基础流程和核心用法,实际爬虫开发中还会遇到动态网页(需用Selenium/Playwright)、验证码、登录验证等复杂场景,后续会逐步更新相关进阶教程。

新手建议先从静态网页爬取练手,熟悉核心库的使用后,再尝试处理复杂场景,同时始终保持合规爬取的原则。

吉ICP备2026002784号