mechanize - 自动化与HTTP web服务器的交互操作

news2024/11/17 1:38:50



1、前言


随着自动化测试的普及与落地推广,出现了众多知名的自动化测试工具,如Selenium 、Robot Framework、Playwright等。本文将介绍一款在Python环境下的mechanize库,这个库能够模拟浏览器行为,支持发送HTTP请求、解析HTML页面和模拟用户输入等功能,非常适合开发自动化测试程序。

在如今的数字化时代,自动化与Web服务器的交互操作变得越来越重要。无论是数据抓取、网站测试,还是自动化表单提交,开发者都在寻找高效便捷的解决方案。Mechanize作为一款强大的Python库,为这些需求提供了完美的答案。



2、简介

在Python中进行有状态的程序化网页浏览。通过程序化浏览页面,轻松填写HTML表单和点击链接等操作,可以实现自动化测试、自动化爬虫等操作。

主要功能:

mechanize.Browser类实现了urllib2.OpenerDirector的接口,因此可以打开任何URL,不仅限于HTTP。

简便的HTML表单填写。

便捷的链接解析和跟踪。

浏览器历史记录,.back()和.reload()方法。

Referer HTTP请求头已正确添加(可选)。

自动遵守robots.txt。

自动处理HTTP-Equiv和Refresh。

Github网址:https://github.com/python-mechanize/mechanize


3、安装

1、正式版本:

pip3 install mechanize


2、开发版本:

git clone https://github.com/python-mechanize/mechanize.git
cd mechanize
pip3 install -e .


3、手动安装,只需在PYTHONPATH上的某处添加mechanize子目录。


那么,Mechanize究竟是如何简化与HTTP Web服务器的交互操作的?为什么它成为了开发者的首选工具 

4、快速上手1、简单示例:

import mechanize

# 创建一个浏览器对象
br = mechanize.Browser()

# 设置请求头,伪装成浏览器
br.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36')]

# 设置各种处理器
br.set_handle_equiv(True) # 解析HTML文档中的meta http-equiv标签
br.set_handle_gzip(True) # 解压缩gzip编码的响应
br.set_handle_redirect(True) # 允许自动处理HTTP重定向
br.set_handle_referer(True) # 在请求头中添加Referer字段
br.set_handle_robots(False) # 不遵循robots.txt文件

# 设置自动刷新的处理,max_time是刷新等待的最长时间
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# 是否设置debug模式
br.set_debug_http(True)
br.set_debug_redirects(True)
br.set_debug_responses(True)

# 打开一个网页
br.open("https://mechanize.readthedocs.io/en/latest/")

# 选择搜索表单
br.select_form(id='rtd-search-form')

# 填写搜索关键词
br['q'] = 'python'

# 提交搜索表单
br.submit()

# 获取搜索结果页面内容
content = br.response().read()

# 打印
print(content)

运行后,打印的结果。 


2、官方示例:

import re
import mechanize

br = mechanize.Browser()
br.open("http://www.example.com/")
# follow second link with element text matching regular expression
response1 = br.follow_link(text_regex=r"cheese\s*shop", nr=1)
print(br.title())
print(response1.geturl())
print(response1.info()) # headers
print(response1.read()) # body

br.select_form(name="order")
# Browser passes through unknown attributes (including methods)
# to the selected HTMLForm.
br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__)
# Submit current form. Browser calls .close() on the current response on
# navigation, so this closes response1
response2 = br.submit()

# print currently selected form (don't call .submit() on this, use br.submit())
print(br.form)

response3 = br.back() # back to cheese shop (same data as response1)
# the history mechanism returns cached response objects
# we can still use the response, even though it was .close()d
response3.get_data() # like .seek(0) followed by .read()
response4 = br.reload() # fetches from server

for form in br.forms():
    print(form)
# .links() optionally accepts the keyword args of .follow_/.find_link()
for link in br.links(url_regex="python.org"):
    print(link)
    br.follow_link(link) # takes EITHER Link instance OR keyword args
    br.back()

Mechanize的最大优势在于其模拟浏览器的能力,允许开发者自动化地与网页进行交互。例如,开发者小王需要定期从某个网站抓取数据。通过使用Mechanize,他能够编写脚本自动登录网站,导航至特定页面,并抓取所需的数据。这不仅节省了大量的时间,还避免了手动操作的繁琐和重复

Mechanize库不仅简化了与HTTP Web服务器的交互操作,还为开发者提供了强大的自动化能力。通过使用Mechanize,开发者可以更高效地完成数据抓取、网站测试等任务,专注于更具创造性的开发工作。

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

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

相关文章

Day13—大语言模型

定义 大语言模型(Large Language Models)是一种基于深度学习的自然语言处理(NLP)模型,用于处理和生成人类语言文本。 一、认识NLP 什么是NLP ​ NLP(Natural Language Processing)&#xff0…

vue3+crypto-js插件实现对密码加密后传给后端

最近在做项目的过程中又遇到了一个新的问题,在实现后端管理系统的个人信息页面中,涉及到修改密码的功能,刚开始我直接通过传参的方式将修改的密码传入给后端,可是后端说需要将原密码、新密码以及确认密码都进行加密处理&#xff0…

高铝粉煤灰提取氧化铝可实现资源最大化利用 我国政府重视程度高

高铝粉煤灰提取氧化铝可实现资源最大化利用 我国政府重视程度高 高铝粉煤灰,是指氧化铝含量大于37%的粉煤灰,高铝粉煤灰提取氧化铝,是以高铝粉煤灰为原料,提取氧化铝的技术,可以提高我国氧化铝供应能力,实现…

C语言的学习发展路线(都是干货)

哈喽,大家好呀~我又回来了,前期比较忙,没有时间来更文,现在给大家推荐了一个C语言的学习路线,供大家一起学习啦! 1. 环境搭建与工具篇 选择编译器:常用的编译器有gcc、Clang、Visual Studio等。…

Linux rpm包管理

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager (RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志&am…

推荐给中小学生的暑假打字神器

暑假是孩子们放松身心、增长知识的好时机。在这个漫长的假期里,家长们不仅希望孩子能够快乐地度过每一天,还希望他们能在学习上有所进步。尤其是随着科技的发展,熟练的打字技巧已经成为现代学习和工作的基本技能之一。今天,我要向…

10分钟掌握Python缓存,效率提升1000%

全文速览 python的不同缓存组件的使用场景和使用样例cachetools的使用 项目背景 代码检查项目,需要存储每一步检查的中间结果,最终把结果汇总并写入文件中 在中间结果的存储中 可以使用context进行上下文的传递,但是整体对代码改动比较大…

Jira实践案例分享:小米集团如何通过API请求优化、数据治理与AI智能客服等,实现Jira系统的高效运维

日前,Atlassian中国合作伙伴企业日活动在上海成功举办。活动以“AI协同 创未来——如何利用人工智能提升团队协作,加速产品交付”为主题,深入探讨了AI技术在团队协作与产品交付中的创新应用与实践,吸引了众多业内专家、企业客户及…

股掌柜:实时行情数据和工具:揭示投资潜力的关键

如今充斥着各种投资信息、交易平台和金融工具的时代,如何抓住投资机会成为了每个投资者必须面对的重要挑战。一个明确的投资策略和准确的市场分析成为了判断市场走势和抓住投资机会的关键。而实时行情数据和工具的使用则能够为投资者提供全面、准确的市场信息&#…

选择诊所管理系统的原则是什么?

如今,诊所管理系统已成为医疗机构提升管理效率、优化患者服务的重要工具。然而,市场上的诊所管理系统琳琅满目,功能各异,因此,如何选择一款适合自己诊所的管理系统,是许多诊所管理者需要思考的问题。下面&a…

idea常用配置 | 快捷注释

idea快速注释 一、类上快速注释 (本方法是IDEA环境自带的,设置特别方便简单易使用) 1、偏好设置->编辑器->文件和代码模版 | File-Settings-Editor-File and Code Templates 2、右下方的“描述”中有相对应的自动注注释配置格式 贴…

什么是期货基金?

期货基金,是指广大投资者将资金集中起来,委托给专业的期货投资机构,并通过商品交易顾问进行期货投资交易,投资者承担投资风险并享有投资利润的一种集合投资方式。期货基金的投资对象主要有两大类商品:期货与金融期货。…

使用nvm命令进行node和npm版本下载以及切换

下载以及安装nvm方式 https://blog.csdn.net/ppz8823/article/details/130862191 1.查看nvm版本 nvm -v2.查看node 和 npm版本 node -v npm -v3.使用nvm查看已下载的node版本 nvm ls4.使用nvm 查看可使用的在线node版本 nvm list available4.下载想要使用的node版本&#x…

叉车装载机智能AI影像防撞系统,让车辆远离事故!

"员工受伤会给你的公司带来多少损失? 如果把安全放在首位,你会节省多少钱? 避免碰撞和降低工作场所的伤害风险,不仅可以挽救生命,还可以降低整体成本。" 你知道吗?2021年度全国叉车事故总数为42起…

互联网医院系统开发中的移动端应用设计

在现代医疗服务中,互联网医院系统逐渐成为提升患者体验和优化医疗资源的重要手段。而移动端应用作为互联网医院系统的关键组成部分,其设计和开发尤为重要。本文将从设计原则、技术架构和具体实现等方面探讨互联网医院系统中的移动端应用设计,…

Android studio Logcat 功能介绍

介绍 Android Studio Jellyfish版本下logcat功能,不同的tag会有不同的颜色,不同level等级的log默认也有不同的颜色。log过滤修改的更简洁了,原先的log视图只需要勾选就可以选择不同level的log了,当前需要在输入框中进行过滤器匹配…

高性能并行计算华为云实验三:蒙特卡罗算法实验

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建蒙特卡罗算法源码 3.2 Makefile的创建与编译 3.3 主机文件配置与运行监测​​​​​​​ 四、实验结果与分析 4.1 原教程对应的实验结果 4.2 改进后的实验结果 五、实验思考与总结 5.1 实验思考 5.2 实验总结…

高效安全的IPXProxy代理服务:摆脱免费代理的烦恼

​在现代互联网环境中,IP代理的使用变得越来越普遍。无论是企业级用户还是个人用户,都需要借助IP代理来实现隐私保护、网络加速和跨区域访问。然而,面对市场上众多的代理服务,有些用户会因为成本考虑而选择免费代理。然而&#xf…

用python做地图绘制

1.写代码 from pyecharts.charts import Map from pyecharts.options import VisualMapOptsmapMap() data[("上海市",122),("北京市",12),("天津市", 12),("广东省",22) ] map.add("测试地图",data) map.set_global_opts(v…

惠海 H6901B升压恒流3.7V 7.4V 12V 24V 30V 36V 48V 60V 80V 100V LED灯杯方案

H6901B是一款升压型LED恒流驱动芯片,具有良好稳定性的特点。H6901B的主要特点包括宽输入电压范围(2.7V-100V)、高工作频率(1MHz)以及多种保护功能(如芯片供电欠压保护、过温保护、软启动等)。此…