楼主: Yukaliu611
51 0

[其他] 用 DrissionPage 入门网页 RPA:从打开百度到抓取新闻写入本地文件 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-11-20
最后登录
2018-11-20

楼主
Yukaliu611 发表于 2025-12-2 17:37:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

文章目录

  • 一、环境准备:安装 DrissionPage 并启动浏览器
    • 1. 打开命令行终端
    • 2. 检查 Python 与 pip 状态
    • 3. 使用国内镜像安装 DrissionPage
    • 4. 验证 DrissionPage 是否可用
  • 二、使用 DrissionPage 启动浏览器并访问网页
    • 1. 示例代码
    • 2. 代码逐步解析
  • 三、使用 XPath 在百度首页中定位热搜词
    • 1. 示例代码
    • 2. 使用开发者工具获取xpath
    • 3. 在 DrissionPage 中通过 XPath 查找元素
  • 四、抓取新闻标题与正文并写入本地文件
    • 1. 示例代码
    • 2. 打开新闻详情页面
    • 3. 文件写入逻辑说明
    • 4. ele 与 eles 的区别
  • 五、能力总结与后续扩展方向
    • 1. 浏览器控制能力
    • 2. 页面元素定位与数据获取能力
    • 3. 数据持久化能力
    • 4. 可尝试的扩展方向

在进行网页自动化或简易爬虫开发时,多数人首先想到的是 Selenium。然而,在 Python 的生态体系中,还有一个更加轻便且易于上手的替代方案——DrissionPage。

本文将通过三个逐步深入的代码实例,引导你完成一条完整的自动化流程:

  • 启动浏览器并加载目标网页
  • 利用 XPath 定位页面元素并提取文本内容
  • 采集新闻标题和正文信息,并保存至本地文件系统

不堆砌理论术语,重点聚焦于“代码实际做了什么”以及“其背后的实现逻辑”。

一、环境准备:安装 DrissionPage 并启动浏览器

本部分以 Windows 操作系统为例,介绍如何完成 DrissionPage 的安装及基础功能验证。前提是已正确安装 Python 3 环境。

1. 打开命令行终端

在 Windows 系统中,可通过以下步骤打开命令提示符:

  1. 点击左下角的「开始」菜单;
  2. 在搜索框内输入 cmd
  3. 从结果中选择「命令提示符」,进入黑色命令行界面。

后续所有安装与测试命令均在此窗口中执行。

2. 检查 Python 与 pip 状态

在终端中依次运行以下两条命令:

python --version
pip --version

若返回结果类似如下输出:

Python 3.x.x
pip 24.x from ...

则表明 Python 解释器和包管理工具 pip 均处于正常工作状态,可以继续下一步操作。

如果出现“不是内部或外部命令”等错误提示,则需先配置或修复 Python 运行环境。

3. 使用国内镜像安装 DrissionPage

为提升下载速度与稳定性,推荐使用阿里云 PyPI 镜像源进行安装:

pip install DrissionPage -i https://mirrors.aliyun.com/pypi/simple/

各参数含义如下:

  • pip:Python 包管理工具,用于安装第三方库;
  • install:指示 pip 执行安装操作;
  • DrissionPage:目标安装模块,支持浏览器控制与网页自动化;
  • -i 镜像地址:指定使用阿里云镜像源,避免官方源缓慢或连接失败问题。

安装成功后,终端通常会显示 Successfully installed DrissionPage-... 提示信息。

4. 验证 DrissionPage 是否可用

建议安装完成后进行一次最小化测试:

在命令行中启动 Python 交互环境并输入:

python
from DrissionPage import Chromium
如果没有任何报错信息,说明 DrissionPage 已可以正常导入。

若无报错,则说明模块导入成功。输入 exit() 或按下 Ctrl + Z 后回车退出交互模式。

至此,DrissionPage 的安装与基础环境校验已完成,可进入下一阶段的浏览器控制实践。

二、使用 DrissionPage 启动浏览器并访问网页

确认环境配置无误后,接下来让程序真正启动一个浏览器实例,并加载指定网页。以下是基础示例代码。

1. 示例代码

from DrissionPage import Chromium

# 创建浏览器对象
page = Chromium()

# 获取当前标签页
tab = page.get_tab()

# 访问百度首页
tab.get("https://www.baidu.com")

2. 代码逐步解析

from DrissionPage import Chromium

从 DrissionPage 模块中引入 Chromium 类,该类用于创建基于 Chromium 内核的浏览器实例。

page = Chromium()

实例化一个浏览器对象 page。执行此语句时,系统会自动启动一个由 DrissionPage 控制的浏览器进程,通常可见独立窗口弹出。

tab = page.get_tab()

获取当前默认激活的标签页对象。后续所有页面级操作(如跳转、元素查找等)都将通过该 tab 对象完成。

tab.get("https://www.baidu.com")

指令该标签页访问百度主页 URL,完成页面加载动作。

三、使用 XPath 在百度首页中定位热搜词

网页自动化常涉及对特定元素的识别与提取,XPath 是一种高效精准的定位方式。以下展示如何结合开发者工具与 DrissionPage 实现热搜词抓取。

1. 示例代码

# 假设 tab 已存在且已打开百度首页
hot_search_elements = tab.eles('xpath://div[@class="title-content"]//a')
for item in hot_search_elements:
    print(item.text)

2. 使用开发者工具获取xpath

在浏览器中打开百度首页,右键点击热搜词条并选择「检查」或「审查元素」,调出开发者工具面板。观察对应 HTML 节点结构,找到具有唯一性特征的路径表达式,例如包含特定 class 名称的 div 或 a 标签。

通过复制完整 XPath 或手动编写更简洁的选择器,确保能准确匹配目标节点集合。

3. 在 DrissionPage 中通过 XPath 查找元素

使用 tab.eles() 方法传入 XPath 字符串,返回符合条件的所有元素列表。若只需单个元素,可使用 tab.ele()

每个元素对象提供多种属性与方法,如 .text 获取文本内容,.href 获取链接地址等。

四、抓取新闻标题与正文并写入本地文件

进一步拓展应用场景,演示如何进入详情页抓取结构化内容,并实现本地持久化存储。

1. 示例代码

# 进入某新闻链接
tab.get("https://example-news-site.com/article/123")

# 提取标题与正文
title = tab.ele('tag:h1').text
content = tab.ele('tag:article').text

# 写入本地文件
with open('news.txt', 'w', encoding='utf-8') as f:
    f.write(f"标题:{title}\n\n正文:\n{content}")

2. 打开新闻详情页面

通过 tab.get(url) 跳转至具体新闻页面,等待页面加载完毕后再执行元素提取操作。

3. 文件写入逻辑说明

使用 Python 内置的 open() 函数以写入模式打开文件,指定 UTF-8 编码防止中文乱码。将提取的标题与正文按格式拼接后写入磁盘,形成可长期保存的数据文件。

4. ele 与 eles 的区别

ele():用于获取第一个匹配的元素,适用于唯一存在的目标(如标题、主图等);

eles():返回所有匹配元素组成的列表,适合处理重复结构(如热搜列表、评论区等)。

根据实际需求选择合适的方法,是提高脚本效率与稳定性的关键。

五、能力总结与后续扩展方向

1. 浏览器控制能力

DrissionPage 支持完整浏览器生命周期管理,包括启动、关闭、标签页切换、页面刷新、前进后退等操作,满足常见 RPA 场景需求。

2. 页面元素定位与数据获取能力

支持多种选择器语法(XPath、CSS、标签名、属性等),能够灵活应对动态页面与复杂 DOM 结构,实现精准抓取。

3. 数据持久化能力

结合 Python 原生文件操作或第三方库(如 csv、json、pandas),可将采集数据导出为文本、表格或数据库记录,便于后续分析处理。

4. 可尝试的扩展方向

  • 集成定时任务(如使用 schedule 或 APScheduler)实现周期性采集;
  • 结合 GUI 库(如 tkinter)开发可视化操作界面;
  • 对接数据库系统,构建小型资讯归档系统;
  • 加入异常处理与日志记录机制,增强脚本健壮性。

当浏览器窗口成功启动后,可以观察到地址栏自动填充目标 URL 并加载对应页面内容。

至此,我们已经完成了网页 RPA 的一个核心基础步骤:通过代码自动控制浏览器打开页面并访问指定站点,而非依赖人工操作。

三、利用 XPath 定位百度首页热搜词

仅仅实现页面访问并不足以体现网页自动化的真正能力。其关键价值在于能够精准识别页面中的特定元素,并对其进行文本提取或点击等交互操作。以下以“获取百度首页第一条热搜标题”为例进行演示。

1. 示例代码展示

from DrissionPage import Chromium
page = Chromium()
tab = page.get_tab()
tab.get("https://www.baidu.com")
# 使用 XPath 获取第一条热搜的标题元素
title = tab.ele('xpath://*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')
# 输出该元素的文本内容
print(title.text)

2. 如何通过开发者工具获取 XPath

  • 在浏览器中打开百度首页;
  • 在“百度热搜”区域任意一条热搜文字上右键,选择「检查」(或直接按 F12 启动开发者工具);
  • 根据页面结构定位到对应节点,右键复制其 XPath 路径。

3. 在 DrissionPage 中使用 XPath 查找元素

核心语句如下:

title = tab.ele('xpath://*[@id="hotsearch-content-wrapper"]/li[1]/a/span[2]')

说明:

  • tab.ele(selector):用于在当前标签页中根据选择器查找单个元素;
  • 选择器字符串以 xpath: 开头,表示后续内容采用 XPath 语法;
  • 获取元素后,调用 title.text 即可输出其内部纯文本内容,即第一条热搜的标题。

由此可总结出一套清晰的操作流程:

  1. 借助开发者工具分析页面 DOM 结构;
  2. 编写或复制所需的 XPath 路径;
  3. 在 DrissionPage 中使用 tab.ele('xpath:...') 实现元素定位;
  4. 通过 .text 或其他属性/方法提取所需数据。

四、抓取新闻标题与正文并保存至本地文件

掌握基本的元素定位技术后,便可进一步将网页内容提取并存储到本地,便于后续处理与分析。下面以澎湃新闻网的一篇新闻文章为例,演示如何抓取标题和正文,并写入名为“新闻.txt”的文本文件中。

1. 示例代码

from DrissionPage import Chromium
page = Chromium()
tab = page.get_tab()
tab.get("https://www.thepaper.cn/newsDetail_forward_26649723")

# 以 UTF-8 编码方式打开文件,支持中文内容写入
f = open("新闻.txt", "w", encoding="utf-8")

# 提取新闻标题并通过 XPath 写入文件
title = tab.ele('xpath://*[@id="__next"]/main/div[4]/div[1]/div[1]/div/h1')
print(title.text)
f.write(title.text)

# 提取正文容器内容并追加换行后写入
context = tab.ele('xpath://*[@id="__next"]/main/div[4]/div[1]/div[1]/div/div[3]')
print(context.text)
f.write("\n" + context.text)

# 关闭文件流,确保数据完整写入磁盘
f.close()

2. 加载新闻详情页面

执行以下命令可在浏览器中跳转至指定新闻页面:

tab.get("https://www.thepaper.cn/newsDetail_forward_26649723")

该步骤会自动加载目标 URL 所对应的新闻详情页。

3. 文件写入逻辑解析

代码片段:

f = open("新闻.txt", "w", encoding="utf-8")

含义说明:

  • "新闻.txt":目标文件名称,若不存在则创建,若已存在则在 "w" 模式下被清空并重新写入;
  • "w":表示写入模式(write mode);
  • encoding="utf-8":设置编码格式为 UTF-8,防止中文字符出现乱码问题。

后续操作包括:

f.write(title.text)
f.write("\n" + context.text)
f.close()

实现功能如下:

  • 首先将新闻标题写入文件;
  • 然后添加一个换行符 \n
  • 接着写入正文部分的整体文本内容;
  • 最后调用 f.close() 关闭文件句柄,确保所有内容持久化保存。

4. ele() 与 eles() 方法的区别

上述示例中,正文是作为一个整体容器提取的。如果需要对正文逐段处理,则应使用 eles() 方法,它返回多个匹配的元素列表。例如:

主要差异在于:

  • ele(selector):返回第一个符合选择器条件的元素。
  • eles(selector):返回所有匹配的元素,结果为列表类型,可通过遍历逐一处理每个元素。

在处理新闻条目、评论列表等包含多个重复结构的场景时,使用 eles() 更适合进行批量数据提取与操作。

五、功能总结与未来拓展方向

通过前述三个实例可以看出,DrissionPage 在网页自动化任务中具备清晰的操作逻辑和强大的功能性。总体来看,其核心能力可归纳为以下三个方面:

1. 浏览器操控能力

利用 ChromiumPageChromium 类创建浏览器实例,实现对真实浏览器的控制。通过调用 get_tab() 获取当前标签页对象,并使用 tab.get(url) 在指定页面中跳转至目标网址。

该能力模拟了“手动打开浏览器并输入网址”的基本流程,是实现自动化的第一步。

2. 页面元素识别与信息提取能力

借助 XPath 表达式(可编写或复制),结合 tab.ele('xpath:...')tab.eles('xpath:...') 实现对特定元素的精准定位。获取元素对象后,可通过其 .text 属性提取标签内的纯文本内容。

这一功能是完成自动填写表单、模拟点击按钮、抓取网页内容等高级操作的基础支撑。

3. 数据本地化存储能力

通过 Python 内置的 open(..., "w", encoding="utf-8") 方法创建或覆盖文本文件,配合 write() 和换行符 \n 组织输出格式。最终使用 close() 显式关闭文件流,或更推荐地采用 with 上下文管理器确保数据完整写入磁盘。

一旦将网页数据保存至本地文件系统,即可开展后续的数据清洗、统计分析或可视化展示等工作。

4. 潜在的进阶应用方向

  • 批量采集新闻或列表型数据:将多个目标链接存入列表,循环执行相同的访问与提取逻辑,实现规模化数据获取。
  • 结构化数据存储:将标题、发布时间、正文内容等字段分别整理,写入 CSV 文件、JSON 文件或直接导入数据库,提升数据可管理性与查询效率。
  • 集成定时执行机制:结合操作系统级别的计划任务(如 cron)或 Python 的定时库(如 schedule 或 APScheduler),定期抓取热搜榜单、新闻动态等信息,构建轻量级监控系统或资讯聚合工具。
  • 对接 Web 接口服务:若后续引入 FastAPI 等 Web 框架,可将现有的爬取逻辑封装成 RESTful API 接口,供前端页面或其他系统远程调用,逐步演进为一个小型数据服务平台。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:page RIS Iss Age DRI

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注ck
拉您进交流群
GMT+8, 2025-12-30 19:04