多人想学编程,第一个目标就是爬虫——原因很简单,爬虫是最容易看到编程成果的技能之一。几行代码就能自动抓取网页数据,不用手动复制粘贴,不管是做数据分析、素材收集、学习练手都超级实用。

今天这篇教程,零门槛、无废话、手把手,专门针对新手编写。从爬虫原理、环境搭建、核心代码、实战案例到避坑指南一次性讲透,看完你也能写出属于自己的简单爬虫。

前置说明:本文所有案例均用于合法学习、个人练手,禁止用于爬取隐私数据、商业数据、违规网站,爬虫有度,合规第一!

一、什么是爬虫?通俗理解

爬虫全称网络爬虫,我们可以把它简单理解为:一个模拟人访问网页、自动获取数据的程序

我们手动获取数据的流程:打开浏览器→输入网址→打开网页→复制文字/图片→保存到本地。

爬虫程序的流程:发送网络请求→获取网页源码→解析提取有效数据→自动保存数据。

核心优势:速度快、批量操作、不重复、零人工,几十行代码就能完成普通人几小时的工作量。

二、爬虫必备环境搭建

本次教程使用 Python 编写爬虫,Python是目前爬虫领域最主流、最简单的语言,语法简洁、第三方库丰富。

1. 安装Python

直接前往Python官网下载最新版本,安装时务必勾选 Add Python to PATH(自动配置环境变量),避免后续报错。

安装完成后,打开电脑CMD(Windows)/终端(Mac),输入以下命令验证是否安装成功:


python --version

输出版本号即代表安装成功。

2. 安装核心爬虫库

新手入门爬虫只需要两个核心库,一键安装即可:

  • requests:发送网络请求,获取网页内容,替代浏览器

  • beautifulsoup4:解析网页源码,精准提取文字、链接、图片等数据

终端输入安装命令:


pip install requests beautifulsoup4

三、爬虫核心原理(新手必看)

所有简单爬虫,万变不离其宗,只有三步核心逻辑,记住就能搞定80%的基础爬虫场景:

  1. 发送请求:通过requests库向目标网址发送请求,模拟浏览器访问

  2. 获取源码:接收服务器返回的网页HTML源码(网页所有内容都藏在源码中)

  3. 解析提取:用BeautifulSoup筛选源码,提取我们需要的标题、内容、链接等数据

四、第一个爬虫实战:爬取网页标题+段落内容

我们以公开测试网页为例,写一个完整的入门爬虫,代码可直接复制运行,零修改即可出结果。

完整可运行代码


# 导入所需库 import requests from bs4 import BeautifulSoup # 1. 目标网址(公开测试网页,稳定可访问) url = "http://www.baidu.com" # 2. 请求头:模拟浏览器访问,避免被网站拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geckocko) Chrome/120.0.0.0 Safari/537.36" } # 3. 发送网络请求,获取网页内容 response = requests.get(url, headers=headers) # 设置编码,解决中文乱码问题 response.encoding = "utf-8" # 4. 解析网页源码 soup = BeautifulSoup(response.text, "html.parser") # 5. 提取数据 # 提取网页标题 title = soup.title.string print("网页标题:", title) # 提取所有a标签(链接) a_list = soup.find_all("a") print("\n页面所有链接文本:") for a in a_list: # 获取链接文本和链接地址 text = a.get_text().strip() href = a.get("href") if text: print(f"文本:{text} | 链接:{href}")

代码逐行讲解(新手必懂)

  • headers请求头:核心关键!很多新手爬虫被拦截,就是因为没有加请求头,网站会识别出是程序访问,直接拒绝。添加User-Agent即可伪装成浏览器。

  • requests.get():向目标网址发送GET请求,获取网页完整内容。

  • response.encoding:手动设置编码,彻底解决爬虫最常见的中文乱码问题。

  • BeautifulSoup解析:将杂乱的网页源码结构化,方便精准提取数据。

  • find_all():批量查找网页中指定标签,是爬虫提取数据的核心方法。

五、进阶实战:精准爬取指定内容并保存到本地

学会基础爬取后,我们升级功能:精准筛选数据 + 自动保存为TXT文件,实现数据落地。

下面以爬取百度首页导航文本为例,自动保存数据到本地:


import requests from bs4 import BeautifulSoup url = "http://www.baidu.com" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Geckocko) Chrome/120.0.0.0 Safari/537.36" } # 发送请求 response = requests.get(url, headers=headers) response.encoding = "utf-8" soup = BeautifulSoup(response.text, "html.parser") # 筛选有效导航链接(过滤空内容) nav_data = [] a_tags = soup.find_all("a") for a in a_tags: text = a.get_text().strip() href = a.get("href") if text and href: nav_data.append(f"名称:{text},链接:{href}") # 保存数据到本地TXT文件 with open("爬虫数据.txt", "w", encoding="utf-8") as f: for data in nav_data: f.write(data + "\n") print("数据爬取完成!已自动保存到 爬虫数据.txt")

运行代码后,项目文件夹会自动生成 爬虫数据.txt 文件,所有爬取的内容都会自动保存,无需手动复制。

六、新手爬虫高频报错&避坑指南

新手写爬虫90%的问题,都集中在这几点,提前规避少走半年弯路:

1. 中文乱码

解决方案:请求后强制设置编码 response.encoding = "utf-8"

2. 网页拒绝访问、返回403错误

原因:网站识别出爬虫程序,拦截访问

解决方案:必须添加 User-Agent 请求头,伪装浏览器访问

3. 爬取数据为空

原因:标签查找错误、网页动态加载、筛选条件过严

解决方案:打开网页F12开发者工具,核对真实标签名称,区分大小写和class属性

4. 请求频率过快被封IP

解决方案:导入time库,添加延时,模拟人类浏览速度


import time time.sleep(1) # 每次请求暂停1秒

七、爬虫最重要的:合规须知

爬虫是一把双刃剑,技术可以免费学,但使用必须守规矩,新手一定要牢记:

  • 禁止爬取个人隐私、用户信息、付费内容、商业机密

  • 禁止高频暴力爬取,导致网站服务器瘫痪

  • 仅用于个人学习、非商业用途,切勿用于盈利、侵权、爬虫薅羊毛

合法合规爬虫,才是长久学习的前提。

八、新手后续学习方向

掌握本文的基础爬虫后,你可以继续进阶学习这些核心技能:

  1. 静态网页爬虫:熟练运用find、find_all、class、id精准筛选数据

  2. 动态网页爬虫:学习Selenium、Playwright,爬取JS加载的网页数据

  3. 数据存储:将爬取数据保存为Excel、CSV、数据库格式

  4. 反爬破解:处理验证码、Cookie、IP代理、请求签名等常见反爬机制

九、总结

爬虫入门真的没有想象中难,核心就是发请求→拿源码→解数据→存文件四步流程。本文的代码都是极简入门版,没有复杂语法,新手复制就能运行、就能看到效果。

对于零基础小白来说,不用一开始就深究复杂原理,先跑通案例、建立成就感,再慢慢进阶学习,是最高效的学习方式。

写在最后:如果这篇教程对你有帮助,欢迎点赞收藏!后续会持续更新爬虫进阶教程、实战案例,带你从零学会Python爬虫~

更多推荐