MechanicalSoup,一个非常实用的 Python 自动化浏览器交互工具库!

目录

前言

什么是 Python MechanicalSoup 库?

核心功能

使用方法

 1. 安装 MechanicalSoup 库

 2. 创建 MechanicalSoup 客户端

 3. 打开网页并与之交互

实际应用场景

 1. 网页自动化测试

 2. 网络爬虫与数据提取

 3. 网页自动化操作

 4. 自动化填写和提交多个表单

 5. 与 JavaScript 交互

 6. 页面导航和链接跟踪

总结


前言

大家好,今天为大家分享一个非常实用的 Python 库 - MechanicalSoup。

Github地址:https://github.com/MechanicalSoup/MechanicalSoup


在网络爬虫和自动化测试等领域,与网页进行交互是一项常见的任务。Python MechanicalSoup 库就是为了简化这一过程而设计的工具。本文将全面探讨 MechanicalSoup 库的原理、功能、用法以及实际应用场景,并提供丰富的示例代码,帮助读者更好地了解和使用这个强大的工具。

什么是 Python MechanicalSoup 库?

Python MechanicalSoup 是一个自动化浏览器交互工具,它基于 Python 的 requests 和 BeautifulSoup 库。MechanicalSoup 的目标是模拟人类用户与网站的交互过程,从而实现自动化处理和数据提取。通过模拟浏览器行为,包括填写表单、点击按钮、提交数据等操作,MechanicalSoup 可以实现网页的自动化浏览和操作。

核心功能

  • 表单填写与提交 :MechanicalSoup 可以自动填写网页表单,并模拟用户提交数据的操作。

  • 页面导航与点击 :MechanicalSoup 可以模拟用户在网页上的点击操作,实现页面导航和跳转。

  • 数据提取与解析 :MechanicalSoup 可以从网页中提取数据,并使用 BeautifulSoup 库进行解析和处理。

  • 会话管理 :MechanicalSoup 支持会话管理,可以保持与网站的持久连接,并保持用户状态。

使用方法

 1. 安装 MechanicalSoup 库

首先,需要安装 MechanicalSoup 库:

pip install MechanicalSoup

 2. 创建 MechanicalSoup 客户端

import mechanicalsoup# 创建一个浏览器客户端
browser = mechanicalsoup.StatefulBrowser()

 3. 打开网页并与之交互

# 打开网页
browser.open("http://example.com")# 填写表单并提交
browser.select_form('form[action="/submit"]')
browser["username"] = "user"
browser["password"] = "pass"
browser.submit_selected()# 提取页面数据
page = browser.get_current_page()
data = page.find_all("div", class_="data")
print(data)

实际应用场景

 1. 网页自动化测试

MechanicalSoup 可以用于自动化测试,模拟用户与网页的交互过程,从而进行网页功能的自动化测试和验证。

# 模拟用户登录并验证登录结果
browser.open("http://example.com/login")
browser.select_form('form[action="/login"]')
browser["username"] = "testuser"
browser["password"] = "testpass"
browser.submit_selected()
assert browser.get_url() == "http://example.com/dashboard"

 2. 网络爬虫与数据提取

MechanicalSoup 可以用于构建简单的网络爬虫,从网页中提取数据,并进行后续处理和分析。

# 提取网页中的新闻标题
browser.open("http://example.com/news")
page = browser.get_current_page()
news_titles = [headline.text for headline in page.find_all("h2", class_="title")]
print(news_titles)

 3. 网页自动化操作

MechanicalSoup 可以用于自动化执行网页上的操作,例如填写表单、点击按钮、提交数据等。

# 自动填写并提交表单
browser.open("http://example.com/form")
browser.select_form('form[action="/submit"]')
browser["name"] = "John Doe"
browser["email"] = "john@example.com"
browser.submit_selected()

 4. 自动化填写和提交多个表单

有时候,我们需要自动化填写和提交多个表单,例如在网站上进行批量操作。MechanicalSoup 可以很容易地实现这一点。

# 打开网页
browser.open("http://example.com/multiple-forms")# 填写第一个表单
browser.select_form('form[id="form1"]')
browser["name"] = "John"
browser["email"] = "john@example.com"
browser.submit_selected()# 填写第二个表单
browser.select_form('form[id="form2"]')
browser["username"] = "john"
browser["password"] = "123456"
browser.submit_selected()

 5. 与 JavaScript 交互

有些网页使用 JavaScript 动态加载内容或执行操作。虽然 MechanicalSoup 不能直接执行 JavaScript,但您可以使用其他工具如 Selenium WebDriver 与 MechanicalSoup 结合,实现对 JavaScript 动态网页的操作。

# 使用 Selenium WebDriver 打开网页
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("http://example.com")# 获取动态加载后的页面内容
page_source = driver.page_source# 将页面内容传递给 MechanicalSoup
browser.set_soup(BeautifulSoup(page_source, "html.parser"))# 继续使用 MechanicalSoup 进行后续操作

 6. 页面导航和链接跟踪

MechanicalSoup 也可以用于模拟用户在网页上的导航操作,包括点击链接、返回、前进等。

# 点击链接并跟踪页面导航
link = browser.find_link(text="Next Page")
browser.follow_link(link)

总结

Python MechanicalSoup 库是一个强大而实用的工具,可以帮助开发者轻松实现自动化的网页交互和数据提取任务。通过模拟人类用户与网站的交互过程,包括填写表单、点击按钮、提交数据等操作,MechanicalSoup 提供了简单易用的接口,使得网页自动化处理变得轻而易举。无论是用于自动化测试、数据挖掘还是网页自动化操作,MechanicalSoup 都展现了强大的功能和灵活的应用性,为开发者节省了大量时间和精力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2870339.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

facebook个人广告账户充值方式有哪些?看这一篇就够了

可以使用虚拟信用卡进行充值,也可以使用虚拟卡绑定paypal进行充值 点击获取虚拟卡 开卡步骤如下图 Facebook如何添加支付方式 1.前往支付设置。 2.在支付方式版块,点击添加支付方式。 3.选择要添加的支付方式,填写相关信息,然…

【JS】html字符转义

需求 将html转为字符串将html字符串转义&#xff0c;比如<div>转为<div> 码 /*** html标签字符转义* param {Stirng} str 要转换的html字符* returns String 返回转义的html字符串*/ const elToStr str > str.replaceAll(<, <).replaceAll(>, >)…

15届蓝桥杯第三期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_奇数次数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t2_台阶方案&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t3_约数个数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t4_最…

详解MySQL的MVCC(ReadView部分解析C++源码)

文章目录 1. 什么是MVCC2. MVCC核心组成&#xff08;三大件&#xff09;2.1 MVCC为什么需要三大件 3. 隐藏字段4. undo log4.1 模拟版本链数据形成过程 5. Read View5.1 m_ids5.2 m_creator_trx_id5.3 m_low_limit_id5.4 m_up_limit_id5.5 可见性分析算法 6. MVCC流程模拟6.1 R…

flutter环境搭建实践

Dart Dart 是一种客户端和服务器端的编程语言&#xff0c;最早由 Google 提出。它被设计用于构建高性能、高度可伸缩和可靠的应用程序。Dart 可以编译成本地代码或者在虚拟机中直接运行。在移动应用开发中&#xff0c;Dart 主要用于开发 Flutter 应用。 Flutter 和 Dart 的关…

二叉平衡树和红黑树的代码实现(红黑树以后补充,目前代码也没怎么明白)

二叉平衡树 二叉平衡树节点定义 template<class K , class V> struct AVLTreeNode {AVLTreeNode<K, V>* _left;AVLTreeNode<K, V>* _right;AVLTreeNode<K, V>* _parent;pair<K, V> _kv;int _bf; //balance factorAVLTreeNode(const pair<K,…

ttkbootstrap界面美化系列之简介(一)

一&#xff1a;前言 相信很多同学用Python进行界面设计第一个用到的就是Tkinter&#xff0c;Tkinter是Python的一个标准接口&#xff0c;用于创建GUI&#xff08;图形用户界面&#xff09;应用程序。它是Tcl/Tk的封装&#xff0c;Tkinter的名称来源于Tk技术工具包(Tool…

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析&#xff1a;未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…

亚马逊云科技Glue

Glue 最重要的部分&#xff0c; ETL&#xff1a;用于从 A 点&#xff08;我们的源数据&#xff09;提取、转换和加载数据到 B 点&#xff08;目标文件或数据存储库&#xff09;。 AWS Glue 会为您执行大量此类工作。 转换通常是更繁重的工作&#xff0c;需要从各种来源进行组合…

QML 添加扩展插件QQmlExtensionPlugin

一.添加QQmlExtensionPlugin方式步骤 目的&#xff1a;界面跨软件复用。 项目目录结构如下图&#xff1a; 1.首先&#xff0c;创建一个继承自QQmlExtensionPlugin的类&#xff0c;例如MyPlugin。在这个类中&#xff0c;实现registerTypes()和initializeEngine()方法。 #ifndef …

Transformer self-attention源码及原理理解

自注意力计算公式&#xff1a; 在公式(1)中Q(query)是输入一个序列中的一个token&#xff0c;K(key)代表序列中所有token的特征。 可以得到当前token与序列中其他token的相关性。在论文原文中512&#xff0c;表示每个token用512维特征表示&#xff08;序列符号的embedding长度…

子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新

文章目录 需求弹窗关闭之后父界面刷新展示最新数据 实现方案AVUE 大文本默认展开slotVUE 自定义事件实现 父界面刷新那么如何用呢? 思路核心代码1. 事件定义2. 帕斯卡命名组件且在父组件中引入以及注册3. 子组件被引用与父事件监听4.父组件回调函数 5.按钮弹窗事件 需求 弹窗…

【图像分割】使用Otsu 算法及迭代计算最佳全局阈值估计并实现图像分割(代码实现与分析)

本实验要求理解全局阈值分割的概念&#xff0c;并实现文本图像分割。需要大家深入理解Ostu 算法的实现过程及其迭代原理&#xff0c;同时通过学习使用Otsu 算法及其迭代&#xff0c;实践图像分割技术在文本图像处理中的应用。 以下将从实验原理、实验实现、实验结果分析三部分对…

短剧分销怎么赚钱的?保姆级教程助你短剧cps推广赚大钱

短剧分销怎么赚钱的&#xff1f;小白也能月入过万/“蜂小推“保姆级教程&#xff0c;助你短剧分销赚大钱&#xff01; 相信大家或多或少都在某些群里看到一些“霸道总裁爱上职场小菜鸟...”“这类链接&#xff0c;无利不起早&#xff0c;为什么会有那么多在群里分享这些狗血视…

紧抓需求,把脉市场,方太高端全场景厨电创造厨居新范式

撰稿 | 多客 来源 | 贝多财经 随着“中国制造”向“中国智造”方向转变&#xff0c;厨电不再是单一的工具设施&#xff0c;而是现代化厨居生活的映射&#xff0c;承担着沟通连接人、家庭与社会的桥梁作用。烹饪全场景下智能高效技术、整体美学设计、品类联动能力成为厨电品牌…

【机器学习系列】M3DM工业缺陷检测部署与训练

一.基础资料 1.Git 地址 地址 2.issues issues 3.参考 参考 csdn 二.服务器信息 1.GPU 服务器 GPU 服务器自带 CUDA 安装(前提是需要勾选上)CUDA 需要选择大于 11.3 的版本登录服务器后会自动安装 GPU 驱动 2.CUDA 安装 GPU 服务器自带 CUDA CUDA 版本查看 3.登录信…

从政府工作报告探计算机行业发展——探索计算机行业发展蓝图

目录 前言 一、政策导向与行业发展 &#xff08;一&#xff09;政策导向的影响 &#xff08;二&#xff09;企业如何把握政策机遇推动创新发展 二、技术创新与产业升级 三、数字经济与数字化转型 四、国际合作与竞争态势 五、行业人才培养与科技创新 &#xff08;一&a…

【linux】搜索所有目录和子目录下的包含.git的文件并删除

一、linux命令搜索所有目录和子目录下的包含.git的文件 在Linux系统中&#xff0c;要搜索所有目录和子目录下的包含.git的文件&#xff0c;可以使用find命令。find命令允许指定路径、表达式和操作来查找文件。 以下是使用find命令搜索包含.git的文件的方法&#xff1a; 1. 基…

ideaSSM社区二手交易平台C2C模式开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea ssm 社区二手交易平台系统是一套完善的完整信息管理系统&#xff0c;结合SSM框架完成本系统SpringMVC spring mybatis &#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码…

Ubuntu 22.04 Nvidia Audio2Face Error:Failed to build TensorRT engine

背景 1.在Ubuntu22.04上安装Audio2Face后启动&#xff0c;嘴形不会实时同步。控制台显示如【图一】&#xff1a; 【图一】 2.log日志如下: Error: Error during running command: [‘/home/admin/omniverse/libs/deps/321b626abba810c3f8d1dd4d247d2967/exts/omni.audio2fac…