【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解

【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解

  🌈个人主页:易辰君-ZEEKLOG博客
🔥 系列专栏:https://blog.ZEEKLOG.net/2401_86688088/category_12797772.html

目录

前言

一、SessionPage

(一)SessionPage 模块的基本功能

(二)基本使用

(三)常用方法

(四)页面元素定位和数据提取

(五)Cookie 和会话管理

(六)SessionPage 的优点和局限性

(七)SessionPage 和 DriverPage 的搭配使用

(八)SessionPage总结

二、WebPage

(一)WebPage 的核心功能

(二)WebPage 的基本使用

(三)常用方法

(四)WebPage 的优缺点

(五)WebPage 和 Element 配合使用

(六)适用场景

(七)WebPage总结

三、总结


前言

在信息爆炸的时代,自动化网页爬取和数据获取逐渐成为必备技能。drissionPage 是一个基于 Selenium 和 Requests 的 Python 库,通过 SessionPageWebPage 两大模块,简化了网页的自动化操作与数据抓取。SessionPage 使用 HTTP 请求实现轻量级、高效的静态页面爬取,而 WebPage 则结合了动态页面操作和数据提取的强大功能。本教程将详细讲解 SessionPageWebPage 的使用方法及其核心功能,带您高效掌控网页数据。


一、SessionPage

drissionPage 是一个基于 Selenium 和 Requests 的 Python 库,用于简化网页自动化操作和数据爬取。它的 SessionPage 模块提供了一种无头的 HTTP 方式来操作网页,主要基于 requests 库实现,比起 Selenium 模块下的 DriverPageSessionPage 更轻量、速度更快,非常适合进行页面数据的快速爬取。

(一)SessionPage 模块的基本功能

SessionPage 的核心是使用 requests.Session 对象来模拟浏览器的请求和会话,因此它可以保留会话(如 cookies、session 变量等),方便对一些需要登录状态的页面进行爬取。它能完成 HTTP 请求、获取页面内容、解析页面数据等操作。

主要功能包括:

  • 自动维护会话状态(如 Cookie)
  • 设置请求头(User-Agent、Referer 等)
  • 执行 GET 和 POST 请求
  • 提取页面内容、元素文本、属性等数据
  • 操作模拟表单提交、文件上传、下载等

(二)基本使用

要使用 SessionPage,首先需要导入并创建一个 SessionPage 对象。以下是一个简单的使用示例:

from drission.page import SessionPage # 创建一个 SessionPage 对象 session_page = SessionPage() # 访问一个网页 session_page.get('https://example.com') # 获取网页的标题 print(session_page.title) # 获取网页的 HTML 源码 print(session_page.html) # 获取某个元素的文本 print(session_page('.some-class').text) 

(三)常用方法

SessionPage 提供了一些常用方法,帮助简化爬虫开发。以下是几个主要方法的介绍:

(1)get(url, **kwargs)

发送 GET 请求访问网页,支持传入请求参数、headers、cookies 等。

session_page.get('https://example.com', params={'key': 'value'}, headers={'User-Agent': 'custom-agent'}) 

(2)post(url, data=None, **kwargs)

发送 POST 请求,支持传入请求参数、headers、cookies 等。

session_page.post('https://example.com/login', data={'username': 'myusername', 'password': 'mypassword'}) 

(3)set_headers(headers)

设置默认请求头,后续的请求都会携带这个请求头。

session_page.set_headers({'User-Agent': 'my-custom-agent'}) 

(4)download(url, path)

session_page.download('https://example.com/image.png', 'path/to/save/image.png') 

(四)页面元素定位和数据提取

SessionPage 提供了与 DriverPage 类似的选择器接口,用于提取页面元素信息。使用 session_page('css_selector') 可以快速定位页面元素并提取内容。

# 获取元素的文本 text = session_page('h1.title').text # 获取元素的属性 link = session_page('a.link').attr('href') # 获取页面中所有指定元素 all_links = session_page('a').all_attrs('href') 

(五)Cookie 和会话管理

由于 SessionPage 基于 requests.Session,它能够很好地管理 cookies 和会话。可以通过以下方法来操作 cookies:

(1)cookies

直接访问 cookies 属性可以查看当前的 cookies。

print(session_page.cookies) 

(2)set_cookies(cookies)

设置 cookies,可以传入字典格式的 cookies。

session_page.set_cookies({'name': 'value'}) 

(3)get_cookie(name)

获取指定名称的 cookie 值。

cookie_value = session_page.get_cookie('name') 

(4)clear_cookies()

清除当前会话中的所有 cookies。

session_page.clear_cookies() 

(六)SessionPage 的优点和局限性

优点

  • 速度快:基于 HTTP 请求,不需要加载浏览器,速度更快。
  • 低资源消耗:不需要启动浏览器进程,内存和 CPU 消耗低。
  • 方便爬取纯数据页面:适合用于获取不需要 JavaScript 渲染的静态页面数据。

局限性

  • 无法处理动态内容:SessionPage 无法处理依赖 JavaScript 渲染的内容,适合静态页面或数据接口的爬取。
  • 功能较少:相较于 Selenium,SessionPage 无法进行复杂的浏览器模拟操作,如点击、输入等。

(七)SessionPageDriverPage 的搭配使用

在一些情况下,页面中存在动态内容,而其他部分是静态内容,可以将 SessionPageDriverPage 配合使用。在动态内容加载完成后,通过 DriverPage 获取 cookies 并传递给 SessionPage,然后继续使用 SessionPage 来爬取其他页面,提升效率。

示例:

from drission import Drission from drission.page import SessionPage, DriverPage # 创建 Drission 对象 drission = Drission() # 获取 DriverPage 和 SessionPage driver_page = drission.driver_page session_page = drission.session_page # 使用 DriverPage 登录并获取 cookies driver_page.get('https://example.com/login') driver_page('input[name="username"]').input('myusername') driver_page('input[name="password"]').input('mypassword') driver_page('button[type="submit"]').click() # 将登录后的 cookies 复制到 SessionPage session_page.set_cookies(driver_page.get_cookies()) # 使用 SessionPage 访问其他页面 session_page.get('https://example.com/data') print(session_page.html) 

(八)SessionPage总结

SessionPagedrissionPage 中用于轻量级爬取的模块,适合在 Windows、MacOS 和 Linux 等环境下进行静态页面爬取。它通过封装 requests.Session 实现对 cookies、headers 等的管理,具备快速、低资源消耗的特点。如果需要操作动态网页,可以结合 DriverPage 使用,或直接使用 DriverPage 进行交互。


二、WebPage

WebPagedrissionPage 中用于操作和管理网页的类,它可以基于 DriverPage(使用 Selenium 驱动浏览器)和 SessionPage(使用 requests 进行 HTTP 请求)进行网页访问、数据提取和交互等操作。因此 WebPage 作为 drissionPage 中的核心类,支持丰富的网页操作功能,简化了常见的网页爬取和自动化工作。

(一)WebPage 的核心功能

WebPage 主要提供以下核心功能:

  1. 统一操作接口:不论是使用浏览器驱动(DriverPage)还是基于 HTTP 请求(SessionPage),WebPage 提供了相同的 API 接口。可以通过统一的方法操作页面元素、获取内容和管理会话。
  2. 简化的数据提取:提供简洁的选择器和数据提取方法,支持通过 CSS 选择器、XPath 等方式快速获取元素、文本、属性等信息。
  3. 适用于动态和静态页面:支持 JavaScript 渲染的页面,也可以处理纯静态页面,能够满足多种类型网站的需求。
  4. 会话管理:WebPage 能自动管理和保存会话信息(如 cookies),适合处理需要保持登录状态的任务。

(二)WebPage 的基本使用

首先创建 Drission 对象,并通过它生成 WebPage 实例。WebPage 会根据 Drission 的初始化配置,自动选择 DriverPageSessionPage,以便进行浏览器自动化或 HTTP 请求。

示例:

from drission import Drission from drission.page import WebPage # 初始化 Drission 实例 drission = Drission() # 创建 WebPage 对象 page = WebPage(drission) # 访问页面 page.get('https://example.com') # 获取页面标题 print(page.title) # 获取页面 HTML 源码 print(page.html) 

(三)常用方法

WebPage 提供了丰富的方法来操作页面和提取内容。以下是一些常用方法的介绍:

(1)get(url, **kwargs)

用于加载指定的 URL 地址。对于 SessionPage,可以传入请求参数和 headers 等。

page.get('https://example.com') 

(2)title

获取当前页面的标题。

print(page.title) 

(3)html

返回页面的 HTML 源码。对于 SessionPage,它返回的是请求的响应内容,而对于 DriverPage,则是浏览器渲染后的 HTML。

print(page.html) 

(4)text

获取页面的纯文本内容。

print(page.text) 

(5)元素选择和提取

可以通过 WebPage 的选择器方法来快速获取页面中的元素。支持多种选择器类型,如 CSS、XPath 等。

  • page('css_selector'): 选择单个元素,返回 Element 对象。
  • page('css_selector').text: 获取元素的文本内容。
  • page('css_selector').attr('href'): 获取元素的某个属性值。
  • page('css_selector').all(): 获取多个匹配的元素。
# 获取元素的文本内容 text = page('h1.title').text # 获取元素的属性 link = page('a.link').attr('href') # 获取页面中所有指定元素 all_links = page('a').all_attrs('href') 

(6)操作元素

DriverPage 模式下,WebPage 支持点击、输入文本、提交表单等操作。例如:

# 点击一个按钮 page('button.submit').click() # 在输入框中输入文本 page('input#name').input('drission') # 提交表单 page('form#login').submit() 

(7)滚动和等待

DriverPage 模式下,可以执行滚动、等待等操作,模拟用户的交互。

# 滚动到页面底部 page.scroll_to('bottom') # 等待某个元素出现 page.wait('div.content') 

(四)WebPage 的优缺点

优点

  1. 通用性:WebPage 统一了动态和静态页面的操作接口,能自动选择 DriverPageSessionPage
  2. 丰富的页面操作支持:支持各种页面操作,简化了数据提取、页面交互等工作。
  3. 良好的会话管理:自动保存 cookies,适用于需要登录的页面。

局限性

  • WebPage 的一些功能(如点击、输入)仅在 DriverPage 下有效,在 SessionPage 下无法处理 JavaScript 动态内容。
  • 由于自动化的程度较高,在处理一些复杂页面交互时,可能需要额外的自定义代码。

(五)WebPage 和 Element 配合使用

WebPage 的选择器方法返回的对象是 Element,它表示页面中的一个具体元素。Element 对象允许进一步的操作,例如提取属性、点击、输入等。

示例:

# 获取某个元素 element = page('a.link') # 获取属性 href = element.attr('href') # 点击元素 element.click() # 获取子元素 sub_element = element('span') 

(六)适用场景

  • 动态网页数据提取:可以使用 DriverPage 模式获取 JavaScript 渲染的数据。
  • 静态网页爬取:使用 SessionPage 模式直接请求页面,速度快、性能高。
  • 登录后数据爬取:利用会话管理功能,通过 WebPage 可以在需要登录的页面中保持会话,方便多页面数据的批量爬取。

(七)WebPage总结

WebPage 是一个封装强大的网页操作类,整合了 DriverPageSessionPage 的功能,适合不同类型的页面操作。其统一的 API 设计,让开发者可以更方便地进行数据提取和页面交互,适用于动态和静态网页的自动化任务。同时,结合 Element 类的丰富操作接口,WebPage 成为一个非常强大、灵活的网页自动化和爬取工具。


三、总结

drissionPageSessionPageWebPage 模块,通过封装 Requests 和 Selenium,为开发者提供了一个高效灵活的网页操作和数据抓取工具。SessionPage 模块适合快速静态页面爬取,而 WebPage 则在动态交互和数据提取上表现出色。通过二者的合理组合,drissionPage 让数据采集更加简洁高效,无论是快速抓取静态数据,还是在需要保持会话状态的网页中提取信息,都可以游刃有余地应对,是一个理想的爬虫开发工具。

Read more

即答侠(InterviewAssistant)深度体验官:AI面试辅助、简历优化与智能问答的全方位技术解析

文章标签: #即答侠深度体验 #AI面试辅助 #简历优化 #求职神器 #技术评测   即答侠(InterviewAssistant)深度体验官:AI面试辅助、简历优化与智能问答的全方位技术解析 🌟 嗨,我是offer吸食怪! 🚀 每一行代码都是通往梦想的阶梯,每一次调试都是技术的修行。 🎯 在求职的战场上,我愿做永不止步的探索者。 ✨ 用算法优化简历,用AI赋能面试。我是代码猎手,也是职场导师。 🔥 每一次面试都是新的挑战,每一个offer都是努力的见证。让我们携手,在AI与求职的交汇点,书写属于程序员的成功传奇。 目录 1. 摘要 2. 即答侠AI面试系统架构概览 * 2.1. 整体架构设计 * 2.2. 智能化面试辅助 * 2.3. 核心技术栈 3. 即答侠下载与部署 4. 简历智能优化功能 * 4.1. 简历优化体验 * 4.2. ATS评分算法模拟实现

OpenClaw 到底是什么?一篇讲清能动手干活的 AI 智能体

OpenClaw 到底是什么?一篇讲清能动手干活的 AI 智能体

最近AI圈最火的开源项目,非OpenClaw莫属。有人称它是“能动手干活的数字员工”,有人说它是个人专属“贾维斯”,也有小白疑惑它和ChatGPT、豆包这类AI到底有啥区别。今天这篇博文,不玩专业术语堆砌,从定位、功能、原理、实操到优缺点,全方位拆解OpenClaw,让你看完就懂它是什么、能做什么、怎么用,彻底搞懂这款“打破AI只说不做”的神器。 先给大家一个最通俗的定义:OpenClaw不是单纯的对话AI,而是一款基于MIT开源协议、本地优先部署的AI智能体执行网关,核心是“能听懂指令、能动手执行”——它就像一个不知疲倦的专属助手,不用你每一步手动操作,只要你用自然语言下达命令,它就能直接操控你的电脑、调用各类工具,把重复、繁琐的任务从头到尾做完,真正实现“指令一出,万事落地”。 很多人会把OpenClaw和传统AI搞混,这里用一组对比,一秒分清核心差异,看完你就明白它的独特价值: **传统AI(ChatGPT/豆包/Kimi等):**相当于“只会回答问题的秘书”,你问它答,只能输出文字、

OpenClaw 从入门到精通:本地优先 AI 助手,一文吃透架构、部署与实战

OpenClaw 从入门到精通:本地优先 AI 助手,一文吃透架构、部署与实战

适合人群:前端/全栈开发者、AI 爱好者、私有化部署玩家 阅读收益:理解设计思想 → 10 分钟部署落地 → 掌握二次开发思路 一、OpenClaw 到底是什么? OpenClaw 是开源、本地优先、可自动执行任务的个人 AI 助手。 它不只是聊天,而是能接管你的电脑、文件、浏览器、IM 工具,用自然语言完成真实工作。 核心定位 • 私有化:数据不上云,全在本地 • 能干活:文件管理、浏览器操作、消息收发、脚本执行 • 全渠道:Telegram/Discord/Slack/iMessage 等一键接入 • 插件化:Skills 技能系统,无限扩展 核心优势 • 🌐 Gateway 统一网关:所有通道、

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(上)

基于模型上下文协议(MCP)的可插拔式临床AI工具链Clinical DS研究(上)

摘要 本研究旨在解决医疗人工智能(AI)在临床落地中面临的核心挑战:如何在严格合规与数据安全的前提下,构建可信赖、可审计、可灵活扩展的智能诊疗辅助系统。传统的单体式AI应用存在“黑盒”风险、难以审计、能力扩展与合规迭代耦合等问题。为此,本文提出并详细论述了一种基于新兴的模型上下文协议的**“可插拔式临床AI工具链”**架构。该架构将复杂的医疗AI系统解构为三个层次:Host(智能体)、MCP Server(能力提供方)和标准协议(JSON-RPC 2.0)。我们设计了三类关键的MCP Server:Clinical Server(临床工具链)、Imaging Server(影像工具链)和Compliance & Audit Server(合规与审计服务器),分别负责临床决策支持、影像智能推理和全流程合规审计。本文重点阐述了一种“两段式多模态”的最稳推理链路,确保影像事实与文本生成解耦,并通过将安全合规策略固化为工具调用契约,实现了“安全左移”。此外,