作为一名自学Python爬虫的程序员,我至今记得第一次上手的窘迫:对着网上一堆“高大上”的教程,装环境装了半天,写的第一行代码就报错,想爬个简单的小说章节,结果要么被网站拒绝,要么爬出来一堆乱码。后来才发现,新手学爬虫最怕“教程太抽象、步骤跳着来”,其实爬虫核心逻辑就3步,只要把环境搭对、把原理摸透,再跟着简单案例实操一遍,半小时就能入门。

今天我就把自己踩坑总结的“保姆级爬虫教程”分享出来,全程通俗易懂,没有复杂术语,从环境搭建到实战爬取豆瓣电影数据,每一步都写得明明白白,新手看一遍就能跟着敲代码,看完就能独立爬取简单网页的数据。

一、爬虫入门先搞懂:这3个核心问题要先清

新手学爬虫,不用一上来就写代码,先搞懂3个基础问题,能少走80%的弯路:

1. 什么是Python爬虫?用“人话”讲清楚

简单说:Python爬虫就是用Python代码模拟浏览器访问网页的行为,把网页上的文字、图片、数据等信息“扒”下来,再整理成我们想要的格式(比如Excel、TXT)

举个通俗的例子:你想手动从豆瓣Top250页面复制所有电影名称和评分,要一页页点开、复制、粘贴,耗时又费力;而爬虫就是替你干这个活的“机器人”——自动打开网页、找到电影信息、复制下来、存到Excel里,几分钟就能搞定你几小时的工作量。

2. 爬虫能用来干嘛?新手常用的3个场景

  • 数据收集:爬取电影评分、商品价格、招聘信息、小说章节等,做数据分析或整理;
  • 个人实用:比如爬取心仪的壁纸图片、整理知乎高赞回答、监控电商商品降价提醒;
  • 入门练手:爬虫是Python新手练手的绝佳项目,能快速掌握Python的核心语法和第三方库使用。

3. 重要提醒:爬虫不是“想爬就爬”

新手一定要注意:爬虫不能违反法律法规和网站规则!

  • 遵守robots.txt协议:每个网站根目录下的robots.txt文件(比如https://www.douban.com/robots.txt)会说明哪些内容可以爬、哪些不行;
  • 不要高频爬取:短时间内大量请求会给网站服务器造成压力,容易被封IP;
  • 敏感数据不能爬:比如用户隐私、付费内容、版权数据等,爬取违法。

二、入门第一步:搭建爬虫环境(5分钟搞定)

爬虫的环境搭建很简单,核心就是“安装Python + 安装必备库”,新手按步骤来,零出错:

1. 安装Python(新手选3.8-3.10版本)

Python是爬虫的基础,版本选3.8到3.10最稳定,步骤如下:

  1. 下载:打开Python官网(https://www.python.org/),点击“Downloads”,选择对应系统(Windows/Mac)的3.9版本(新手推荐);
  2. 安装:
    • Windows:双击安装包,一定要勾选“Add Python 3.9 to PATH”(关键!否则后续命令行找不到Python),然后点击“Install Now”;
    • Mac:双击dmg文件,按提示安装即可;
  3. 验证:打开电脑的“命令提示符(CMD)”(Windows)或“终端(Terminal)”(Mac),输入python --version,如果显示“Python 3.9.x”,说明安装成功。

2. 安装代码编辑器(推荐PyCharm社区版)

纯记事本写代码太麻烦,PyCharm是新手友好的编辑器,免费又好用:

  1. 下载:打开PyCharm官网(https://www.jetbrains.com/pycharm/),选择“Community Edition”(社区版,免费)下载;
  2. 安装:按提示下一步即可,不用改默认设置;
  3. 新建项目:打开PyCharm→点击“New Project”→选择项目保存路径→点击“Create”,就能创建第一个爬虫项目。

3. 安装爬虫必备的2个核心库

Python自带的库不够用,需要安装2个核心第三方库,在PyCharm里操作更简单:

  1. 打开PyCharm→点击顶部“File”→“Settings”→“Project: 你的项目名”→“Python Interpreter”;
  2. 点击右侧“+”号,搜索第一个库:requests(用来给网页发送请求,获取网页内容),点击“Install Package”安装;
  3. 再搜索第二个库:beautifulsoup4(用来解析网页内容,提取想要的数据),同样安装;
  4. 验证:安装完成后,在PyCharm的代码编辑区输入import requestsimport bs4,如果没有红色报错,说明安装成功。

(补充:也可以用命令行安装,在CMD/终端输入pip install requests beautifulsoup4,网速慢的话加国内镜像:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests beautifulsoup4

三、爬虫核心逻辑:3步搞定网页数据爬取

新手不用记复杂理论,爬虫的核心就3步,用“爬取豆瓣Top250电影信息”为例,一步步拆解:

核心步骤拆解(通俗版)

  1. 发送请求:用requests库模拟浏览器访问目标网页,拿到网页的“源代码”(相当于你打开网页后,右键“查看网页源代码”看到的内容);
  2. 解析数据:用beautifulsoup4库从源代码里“筛选”出我们想要的信息(比如电影名称、评分);
  3. 保存数据:把筛选出来的信息存到Excel/TXT文件里,方便查看和使用。

实战案例:爬取豆瓣Top250电影(标题+评分+简介)

这是新手最适合的入门案例,数据结构简单,没有复杂反爬,跟着敲代码就能成:

步骤1:写核心爬虫代码(逐行解释,新手能懂)

在PyCharm里新建一个douban_spider.py文件,复制以下代码(每一行都有注释):

# 导入必备库
import requests
from bs4 import BeautifulSoup
import csv  # 用来保存CSV/Excel文件

# 1. 定义请求头:模拟浏览器访问(避免被网站识别为爬虫)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 2. 定义目标网址(豆瓣Top250第一页)
url = "https://movie.douban.com/top250?start=0&filter="

def get_movie_info():
    try:
        # 第一步:发送请求,获取网页源代码
        # get方法:发送GET请求;headers:带上请求头;timeout:超时时间(避免卡壳)
        response = requests.get(url, headers=headers, timeout=10)
        # 解决乱码问题:设置网页编码(豆瓣是utf-8)
        response.encoding = "utf-8"
        # 拿到网页源代码
        html = response.text

        # 第二步:解析数据,提取电影信息
        # 创建BeautifulSoup对象,指定解析器(lxml,内置的,不用额外装)
        soup = BeautifulSoup(html, "html.parser")
        # 找到所有电影条目(通过F12查看网页结构,发现每个电影在class="item"的div里)
        movie_list = soup.find_all("div", class_="item")

        # 遍历每个电影条目,提取信息
        movies = []
        for movie in movie_list:
            # 提取电影标题(找到class="title"的span标签,取文本)
            title = movie.find("span", class_="title").text
            # 提取电影评分(找到class="rating_num"的span标签,取文本)
            score = movie.find("span", class_="rating_num").text
            # 提取电影简介(找到class="inq"的span标签,没有则显示“无简介”)
            quote = movie.find("span", class_="inq").text if movie.find("span", class_="inq") else "无简介"
            
            # 把信息存入列表
            movies.append([title, score, quote])
            # 打印测试:看是否提取成功
            print(f"电影:{title},评分:{score},简介:{quote}")

        # 第三步:保存数据到CSV文件(Excel能直接打开)
        with open("豆瓣Top250电影.csv", "w", newline="", encoding="utf-8") as f:
            # 创建CSV写入对象
            writer = csv.writer(f)
            # 写入表头
            writer.writerow(["电影标题", "评分", "简介"])
            # 写入电影数据
            writer.writerows(movies)
        
        print("数据爬取并保存成功!文件保存在项目文件夹里")

    except Exception as e:
        # 异常处理:打印错误信息,新手能排查问题
        print(f"爬取失败,错误原因:{e}")

# 调用函数,执行爬虫
if __name__ == "__main__":
    get_movie_info()
步骤2:运行代码,查看结果
  1. 点击PyCharm右上角的“运行”按钮(绿色三角);
  2. 等待几秒,控制台会打印出电影信息,同时项目文件夹里会出现“豆瓣Top250电影.csv”文件;
  3. 双击打开这个CSV文件,就能看到整理好的电影标题、评分、简介,完成!
代码关键部分解释(新手必懂)
  1. 请求头(headers):这是新手最容易漏的!网站会识别“非浏览器”的请求,加上User-Agent(浏览器标识),就能模拟正常访问,避免被拒绝;
  2. BeautifulSoup解析find_all是“找所有符合条件的标签”,find是“找第一个符合条件的标签”,class_加下划线是因为class是Python关键字,避免冲突;
  3. 异常处理(try-except):网络波动、网页结构变化都会导致报错,加异常处理能让程序不崩溃,还能看到错误原因;
  4. 编码设置(response.encoding):不加的话,爬取的中文会变成乱码,豆瓣用utf-8,大部分中文网站都是这个编码。

四、新手爬虫必避的5个坑(我当年全踩过)

  1. 坑1:请求被拒绝(报错403 Forbidden)
    原因:没加请求头,被网站识别为爬虫;
    解决:一定要加User-Agent,代码里已经写好,新手直接复制用就行。

  2. 坑2:爬取的内容是乱码
    原因:网页编码和程序编码不匹配;
    解决:加response.encoding = "utf-8",如果还乱码,试试gbk(部分国内网站用gbk)。

  3. 坑3:解析不到数据(返回空值)
    原因:网页结构变了,或者标签/class名称写错;
    解决:打开目标网页→右键“检查”(F12)→找到对应数据的标签,核对代码里的class/标签名称。

  4. 坑4:程序卡住不动
    原因:没有设置超时时间,网络慢或网站响应慢导致;
    解决:requests.get里加timeout=10,10秒没响应就停止,避免卡壳。

  5. 坑5:爬取多页时被封IP
    原因:短时间内多次请求,网站限制访问;
    解决:加延时,导入time库,在循环里加time.sleep(1)(每次请求间隔1秒),降低请求频率。

五、爬虫进阶方向(入门后该学什么)

学会基础爬虫后,可根据需求进阶,新手不用贪多,逐个突破:

  1. 爬取多页数据:比如爬取豆瓣Top250的所有250部电影,只需修改URL里的start参数(0→25→50…),加循环即可;
  2. 爬取动态网页:比如京东、淘宝的商品数据(网页内容是JS加载的),需要学selenium库(模拟浏览器点击、滚动);
  3. 反爬应对:遇到封IP,学用代理IP;遇到需要登录的网站,学用cookiessession保持登录状态;
  4. 数据存储进阶:把数据存到MySQL、MongoDB数据库,方便后续分析;
  5. 爬虫框架:学Scrapy框架,能高效开发大型爬虫,适合批量爬取数据。

六、爬虫规范:新手一定要注意

  1. 不要爬取敏感数据(比如用户手机号、身份证、付费内容),违法!
  2. 控制爬取频率,不要给网站服务器造成压力(比如间隔1秒以上);
  3. 遵守网站的robots.txt协议(比如豆瓣的robots规定不能爬取用户私信,就不要碰);
  4. 爬取的数据仅用于个人学习,不要商用,避免版权纠纷。

总结:爬虫入门的核心是“实战”

Python爬虫入门真的不难,核心就3步:发请求→解析数据→存数据。新手不用一开始就学复杂的反爬、框架,先把“豆瓣Top250”这个案例敲懂、跑通,再尝试爬取自己感兴趣的内容(比如小说、壁纸),在实战中解决问题,比死记理论快10倍。

我当年学爬虫时,为了解决“乱码”问题,查了一下午资料,现在回头看,那些踩过的坑、调通的代码,才是最宝贵的经验。记住:爬虫的本质是“解决问题”,不是“背代码”,只要敢动手、敢试错,看完这篇教程,你已经能搞定80%的简单爬虫需求了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐