news 2026/5/1 8:05:28

Python 网络爬虫从入门到实战:手把手教你爬取豆瓣电影排行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 网络爬虫从入门到实战:手把手教你爬取豆瓣电影排行

在大数据时代,网络爬虫已成为信息采集的核心工具,广泛应用于数据分析、搜索引擎优化等领域。Python 凭借简洁的语法和强大的库支持,成为编写爬虫的首选语言。本文将从基础概念出发,结合 requests 和 beautifulsoup4 库的实战应用,带大家完成豆瓣电影排行的数据爬取,轻松掌握爬虫核心技能。

一、网络爬虫核心认知

网络爬虫(Web Crawler)是按特定规则自动抓取万维网信息的程序或脚本,如同在网络中漫游的 “蜘蛛”,通过网页中的超链接持续探索更多页面。其核心工作流程可概括为三步:

  1. 数据采集:通过 HTTP 请求获取网页原始内容;
  2. 数据处理:解析 HTML/XML 文档,提取有效信息;
  3. 数据存储:将有用数据持久化到文件或数据库。

二、环境准备:必备库安装

爬虫开发需先安装两个核心库,直接通过 pip 命令即可完成:

  • requests 库:模拟浏览器发送 HTTP 请求,获取网页内容
pip install requests

beautifulsoup4 库:解析 HTML 页面,提取目标数据

pip install beautifulsoup4

三、核心库详解与基础用法

(一)requests 库:获取网页内容

requests 库封装了复杂的 HTTP 请求逻辑,使用起来简洁直观,核心功能如下:

  • 支持 GET/POST/PUT/DELETE 等 HTTP 方法;
  • 自动处理编码、Cookie 和连接池;
  • 提供超时设置和异常处理机制。

基础使用步骤

  1. 导入库:import requests
  2. 发送请求:使用 get () 方法获取网页,需设置 User-Agent 伪装浏览器
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"} url = "https://movie.douban.com/chart" response = requests.get(url, headers=headers, timeout=10)

3.处理响应:通过 status_code 判断请求状态(200 为成功),text 属性获取网页文本

if response.status_code == 200: html = response.text # 获取HTML字符串 response.encoding = response.apparent_encoding # 自动检测编码

(二)beautifulsoup4 库:解析网页数据

获取 HTML 内容后,需用 beautifulsoup4 解析结构,提取目标信息,其核心优势是支持灵活的选择器语法。

基础使用步骤

  1. 导入库:from bs4 import BeautifulSoup
  2. 创建解析对象:指定 HTML 文本和解析器(html.parser 为内置解析器)
soup = BeautifulSoup(html, "html.parser")

3.提取数据:支持两种核心选择器

  • 节点选择器:直接通过标签名获取元素,如soup.title获取标题,soup.p获取第一个 p 标签;
  • 方法选择器:使用 find ()(获取第一个匹配结果)和 find_all ()(获取所有匹配结果),支持按标签名、属性筛选。

常用属性说明

  • name:获取标签名称(如 "div");
  • attrs:获取标签属性(返回字典,如 href、class);
  • string:获取标签内文本内容;
  • stripped_strings:获取所有非空文本(生成器对象)。

四、实战:爬取豆瓣电影排行

(一)明确目标与分析网页

目标:爬取豆瓣电影排行榜的电影名称、上映时间、主演、评分等信息。网页分析:通过浏览器开发者工具查看元素结构,发现电影信息集中在class="pl2"的 div 标签和class="star clearfix"的评分区域。

(二)完整代码实现

import requests from bs4 import BeautifulSoup import json # 1. 设置请求头和目标URL headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"} url = "https://movie.douban.com/chart" # 2. 获取网页内容 def get_html(url, headers): try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: response.encoding = response.apparent_encoding return response.text else: print(f"请求失败,状态码:{response.status_code}") return None except Exception as e: print(f"请求异常:{e}") return None # 3. 解析网页数据 def parse_html(html): soup = BeautifulSoup(html, "html.parser") movies = [] # 查找所有电影条目 items = soup.find_all("tr", class_="item") for item in items: # 提取电影名称 name_tag = item.find("div", class_="pl2").find("a") movie_name = name_tag.get_text(strip=True).replace("\n", "").replace("/", " / ") # 提取上映信息和主演 info_tag = item.find("p", class_="pl") info = info_tag.get_text(strip=True) release_time = info.split("/")[0].strip() actors = [actor.strip() for actor in info.split("/")[1:4] if actor.strip()] # 提取评分 rating_tag = item.find("span", class_="rating_nums") rating = rating_tag.get_text(strip=True) if rating_tag else "暂无评分" # 构建电影字典 movie_dict = { "电影名称": movie_name, "上映时间": release_time, "主演": actors, "评分": rating } movies.append(movie_dict) return movies # 4. 存储数据到JSON文件 def save_data(movies, filename="douban_movies.json"): with open(filename, "w", encoding="utf-8") as f: json.dump(movies, f, ensure_ascii=False, indent=2) print(f"数据已保存到{filename},共爬取{len(movies)}部电影") # 主函数执行 if __name__ == "__main__": html_content = get_html(url, headers) if html_content: movie_data = parse_html(html_content) if movie_data: save_data(movie_data)

(三)关键步骤解析

  1. 反爬处理:设置 User-Agent 伪装成浏览器,避免被服务器识别为爬虫;
  2. 标签定位:通过 find_all () 找到所有电影条目,再逐层提取子标签信息;
  3. 数据清洗:处理文本中的换行符和空格,规范数据格式;
  4. 数据存储:使用 JSON 格式存储,保证数据可读性和可扩展性。

五、总结与拓展

通过本次实战,我们掌握了 Python 爬虫的完整流程:从环境搭建、库的使用,到网页解析和数据存储。requests 库负责 “获取数据”,beautifulsoup4 库负责 “提炼数据”,两者结合可高效完成大多数静态网页的爬取任务。

后续拓展方向:

  • 爬取动态网页:学习 selenium 库模拟浏览器行为;
  • 批量爬取多页:通过构造 URL 参数实现分页爬取;
  • 数据可视化:使用 matplotlib 或 pandas 分析爬取的电影评分分布;
  • 进阶反爬:处理 Cookie、代理 IP 等复杂反爬机制。

爬虫技术的核心是 “遵循规则、尊重版权”,爬取数据时需遵守网站 robots 协议,避免过度请求给服务器造成压力。希望本文能帮助大家快速入门 Python 爬虫,在数据采集的世界中探索更多可能!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 19:12:57

C# 基于OpenCv的视觉工作流-章18-图像缩放

C# 基于OpenCv的视觉工作流-章18-图像缩放 本章目标: 一、按比例缩放; 二、按尺寸缩放;一、按比例缩放; OpenCv按比例缩放可如下使用: Mat matDst new Mat(); Cv2.Resize(image, matDst, new OpenCvSharp.Size(), wid…

作者头像 李华
网站建设 2026/4/30 15:27:36

【珍藏】深入理解Agent工作流:大模型应用的核心技术详解

文章详细解析了AI Agent及其工作流的概念,介绍了AI Agent的组成要素(LLMs、工具、记忆、推理),阐述了Agent工作流的三种核心模式(规划、工具使用、反思),并探讨了其在代理RAG、研究助手、编码助…

作者头像 李华
网站建设 2026/4/10 6:48:00

智慧零售场景下的工业物联网解决方案

在无人零售快速渗透的今天,自助售货机作为智慧零售的核心终端,已广泛布局于地铁站、写字楼、商场等多元场景。但随着点位扩张,运营端普遍面临缺货精准度不足、运维成本高、设备稳定性差、数据管理困难等痛点,成为制约行业规模化发…

作者头像 李华
网站建设 2026/4/30 7:36:02

mscoree.dll文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/27 21:11:26

Linux 调试神器 gdb/cgdb 实战指南:从基础用法到高级技巧

Linux 调试神器 gdb / cgdb 实战指南 (从零基础到生产环境能用得上,2025–2026 年仍然最实用的内容) 先回答最核心的三个问题 gdb 和 cgdb 有什么本质区别? gdb → 纯命令行(功能最全,但交互体验差&#x…

作者头像 李华