Python 数据爬虫 手把手实战教程(零基础可学)

2 阅读4分钟

我带你做3个从易到难的爬虫实战项目,全程复制粘贴就能跑通,学会后能爬90%的常规网页。

先准备环境(1分钟搞定)

打开电脑终端/CMD,执行安装依赖:

# 安装爬虫核心库
pip install requests beautifulsoup4 lxml
  • requests:发送网络请求,获取网页源码
  • BeautifulSoup:解析网页,提取数据
  • lxml:解析器,速度更快

项目1:最简单爬虫 —— 爬取静态网页文字(入门)

目标:爬取一个测试网页的标题、段落文字

完整代码

# 1. 导入库
import requests
from bs4 import BeautifulSoup

# 2. 目标网址(测试用静态网页)
url = "https://www.baidu.com/"

# 3. 发送请求,获取网页源码
response = requests.get(url)
response.encoding = "utf-8"  # 设置编码,防止乱码

# 4. 解析网页
soup = BeautifulSoup(response.text, "lxml")

# 5. 提取数据
title = soup.title.string  # 提取网页标题
print("网页标题:", title)

# 提取所有超链接文字
print("\n超链接文字:")
for a in soup.find_all("a"):
    print(a.get_text())

运行结果

会直接打印出百度首页的标题和所有链接文字。

核心知识点(必记)

  1. requests.get(url) → 获取网页源码
  2. BeautifulSoup(源码, "lxml") → 把源码变成可解析对象
  3. soup.find_all("标签名") → 查找所有指定标签
  4. 标签.get_text() → 获取标签内的文字

项目2:实战爬虫 —— 爬取豆瓣电影TOP25(进阶)

目标:批量爬取电影名称、评分、主演、简介,并保存到本地文件

完整代码

import requests
from bs4 import BeautifulSoup

# 目标网址
url = "https://movie.douban.com/top250?start=0"

# 请求头(必须加!伪装成浏览器,防止被反爬)
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

# 发送请求
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "lxml")

# 找到所有电影条目
movies = soup.find_all("div", class_="item")

# 打开文件保存数据
with open("豆瓣电影TOP25.txt", "w", encoding="utf-8") as f:
    # 遍历提取数据
    for movie in movies:
        # 电影名称
        name = movie.find("span", class_="title").get_text()
        # 评分
        score = movie.find("span", class_="rating_num").get_text()
        # 简介
        info = movie.find("div", class_="bd").find("p").get_text().strip()
        
        # 打印+写入文件
        data = f"电影:{name}\n评分:{score}\n简介:{info}\n-------------------\n"
        print(data)
        f.write(data)

运行结果

  1. 控制台打印出电影数据
  2. 自动生成 豆瓣电影TOP25.txt 文件,保存所有爬取内容

关键技巧

  1. 必须加请求头 User-Agent:豆瓣会拦截没有浏览器标识的爬虫
  2. 定位元素:右键网页 → 检查,查看标签和class名称
  3. 保存数据:用with open自动保存,不会丢失文件

项目3:高级实战 —— 翻页爬取+数据去重(就业级)

目标:爬取豆瓣TOP25全部250部电影,自动翻页+去重

完整代码

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

# 翻页规律:start=0、25、50...225
page_urls = [f"https://movie.douban.com/top250?start={i*25}" for i in range(10)]

all_movies = []  # 存储所有电影,用于去重

# 遍历所有页面
for page in page_urls:
    print(f"正在爬取:{page}")
    response = requests.get(page, headers=headers)
    soup = BeautifulSoup(response.text, "lxml")
    movies = soup.find_all("div", class_="item")

    for movie in movies:
        name = movie.find("span", class_="title").get_text()
        score = movie.find("span", class_="rating_num").get_text()
        
        # 去重:只保存不重复的电影
        if name not in [m["name"] for m in all_movies]:
            all_movies.append({"name": name, "score": score})

# 保存最终数据
with open("豆瓣TOP250全量电影.txt", "w", encoding="utf-8") as f:
    for idx, m in enumerate(all_movies, 1):
        f.write(f"第{idx}名:{m['name']} | 评分:{m['score']}\n")

print(f"\n爬取完成!共爬取 {len(all_movies)} 部电影")

你能学到

  1. 自动翻页:找到网址规律,批量生成链接
  2. 数据去重:避免重复爬取
  3. 结构化存储:用列表+字典管理数据

爬虫必备技能(避坑指南)

1. 反爬应对

  • User-Agent(90%网页需要)
  • 不要请求太快:加 time.sleep(1) 延迟
  • 不爬敏感/付费数据,遵守《网络安全法》

2. 如何定位网页元素(手把手)

  1. 打开目标网页
  2. 右键 → 检查
  3. 点击左上角箭头 → 点你要爬的内容
  4. 复制对应的标签名class名称

3. 常见问题

  • 报错403:没加User-Agent
  • 乱码:加response.encoding="utf-8"
  • 爬不到数据:标签/class写错了

总结

  1. 3个项目从静态文字→单页数据→翻页全量爬取,零基础全覆盖
  2. 核心工具:requests + BeautifulSoup
  3. 关键技巧:请求头、元素定位、翻页、去重、数据保存