最近有个项目需要做视觉自动化处理的工具,最后选用的软件为python,刚好这个机会进行系统学习。短时间学习,需要快速开发,所以记录要点步骤,防止忘记。

 

 链接:

开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装-CSDN博客

开源 python 应用 开发(二)基于pyautogui、open cv 视觉识别的工具自动化-CSDN博客

开源 python 应用 开发(三)python语法介绍-CSDN博客

开源 python 应用 开发(四)python文件和系统综合应用-CSDN博客

开源 python 应用 开发(五)python opencv之目标检测-CSDN博客

开源 python 应用 开发(六)网络爬虫-CSDN博客

开源 python 应用 开发(七)数据可视化-CSDN博客

 推荐链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-CSDN博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-CSDN博客

开源 java android app 开发(二)工程文件结构-CSDN博客

开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客

开源 java android app 开发(四)GUI界面重要组件-CSDN博客

开源 java android app 开发(五)文件和数据库存储-CSDN博客

开源 java android app 开发(六)多媒体使用-CSDN博客

开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客

开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客

开源 java android app 开发(九)后台之线程和服务-CSDN博客

开源 java android app 开发(十)广播机制-CSDN博客

开源 java android app 开发(十一)调试、发布-CSDN博客

开源 java android app 开发(十二)封库.aar-CSDN博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客

本章节内容如下:实现了一个网站登录和页面抓取的功能,主要使用了 requests 和beautifulsoup4  库。

一、引用库的安装

首先安装requests 和beautifulsoup4 库

cmd命令行安装requests

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

cmd命令行安装beautifulsoup4 

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

用vscode终端安装效果如下,cmd安装效果和这个类似

二、爬虫代码解析

2.1  源码

import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoinclass WebsiteLogin:def __init__(self, base_url):self.base_url = base_urlself.session = requests.Session()self.session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'})def find_hidden_inputs(self, html):"""查找表单中的隐藏字段"""soup = BeautifulSoup(html, 'html.parser')hidden_inputs = {}for input_tag in soup.find_all('input', type='hidden'):hidden_inputs[input_tag.get('name')] = input_tag.get('value', '')return hidden_inputsdef login(self, login_url, username, password, extra_data=None):"""登录网站"""# 获取登录页面try:login_page = self.session.get(urljoin(self.base_url, login_url))login_page.raise_for_status()except requests.RequestException as e:print(f"访问登录页面失败: {e}")return False# 获取隐藏字段hidden_inputs = self.find_hidden_inputs(login_page.text)# 准备登录数据login_data = {'inputName': username,'inputPwd': password,**hidden_inputs}# 添加额外的表单数据if extra_data:login_data.update(extra_data)# 提交登录表单try:response = self.session.post(urljoin(self.base_url, login_url),data=login_data,headers={'Referer': urljoin(self.base_url, login_url)})response.raise_for_status()except requests.RequestException as e:print(f"提交登录表单失败: {e}")return False# 验证登录是否成功(根据实际网站调整)#if 'logout' not in response.text.lower() and 'sign out' not in response.text.lower():#    print("登录失败,请检查凭据")#    return Falseif 'login' in response.url.lower():return Falseprint("登录成功!")return Truedef get_page(self, page_url):"""获取指定页面的内容"""try:response = self.session.get(urljoin(self.base_url, page_url))response.raise_for_status()return response.textexcept requests.RequestException as e:print(f"获取页面失败: {e}")return None# 使用示例
if __name__ == "__main__":# 配置信息config = {'base_url': 'http://xxx.com','login_url': '','username': 'xxx','password': 'xxx','target_page': '/xxx/xxx'}# 创建登录实例web_login = WebsiteLogin(config['base_url'])# 尝试登录if web_login.login(config['login_url'], config['username'], config['password']):# 登录成功后获取目标页面target_content = web_login.get_page(config['target_page'])if target_content:print(f"成功获取目标页面内容,长度: {len(target_content)}")# 保存内容with open('target_page.html', 'w', encoding='utf-8') as f:f.write(target_content)else:print("未能获取目标页面内容")else:print("登录失败,程序终止")

2.2  核心参数,主要有config配置信息,信息有web登录页面链接地址,目标跳转页面链接地址,用户名,用户密码。

config参数如下图

2.3  login_data数据,数据里有登录的字段,包含提交页面的用户名的字段,密码字段。

login_data数据如下图

2.4  requests.Session()会自动管理 Cookies,无需手动处理登录后的会话状态。

requests.Session如下图

2.5  登录成功则将跳转页面保存为target_page.html

代码位置如下

三.运行效果

3.1  登录成功后,跳转到指定页面,把指定页面保存为target_page.html文件。

运行效果图

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flink sql读hive catalog数据,将string类型的时间戳数据排序后写入kafka,如何保障写入kafka的数据是有序的

在 Flink SQL 中,要确保从 Hive 读取的 STRING 类型时间戳数据排序后有序写入 Kafka,需要结合 批处理模式、时间类型转换、单分区写入 和 Kafka 生产者配置。以下是完整解决方案: 一、核心解决方案 1. 批处理模式 全局排序 将作业设置为批处…

7.17 滑动窗口 |assign |memo

lcp56. memo优化tle或者改用bfsclass Solution {int m, n;int dx[4] {0, 0, 1, -1};int dy[4] {1, -1, 0, 0};public:int conveyorBelt(vector<string>& matrix, vector<int>& start, vector<int>& end) {int ret INT_MAX;m matrix.size();n…

统计功效是什么?

统计功效的通俗理解可以把“统计功效”想象成侦探破案的能力——它代表统计检验&#xff08;侦探&#xff09;在犯罪事实确实存在&#xff08;真实效应存在&#xff09;时&#xff0c;成功发现真相&#xff08;检测出效应&#xff09;的概率。核心比喻假设你是一个侦探&#xf…

大语言模型(LLM)训练的教师强制(Teacher Forcing)方法

大语言模型&#xff08;LLM&#xff09;在训练时使用一种名为“教师强制&#xff08;Teacher Forcing&#xff09;”的方法&#xff0c;而不是它们在推理&#xff08;生成文本&#xff09;时使用的“自回归&#xff08;Autoregressive&#xff09;”方法 。阐明关于LLM训练的一…

归一化与激活函数:深度学习的双引擎

归一化和激活函数区别 归一化和激活函数是深度学习中两个不同但又存在关联的技术,前者聚焦于“数据分布的调整”,后者聚焦于“引入非线性与输出转换”。 Softmax 既可以被视为一种归一化操作,也属于激活函数 因为它同时满足两者的核心特征,只是从不同角度定义:从“输出…

C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏

C# --- 单例类错误初始化 没有释放资源导致线程泄漏Background原因分析问题一&#xff1a; 错误初始化&#xff08;使用了箭头函数&#xff09;问题一&#xff1a; 没有Dispose资源Background 背景: service A的其中一个Api会向mq发送消息问题&#xff1a;线上发现这个服务经常…

MySQL基础学习之DML,DQL(二)

这里写目录标题一、DML1、INSERT语句1)、给指定列添加数据2)、给全部列添加数据3)、批量数据添加数据4)、操作2、UPDATE语句3、DELETE语句二、DQL1、单表查询1&#xff09;查询语法2&#xff09;查询全部3&#xff09;查询部分4&#xff09;条件查询5&#xff09;聚合函数6&…

在 Linux 系统中实现 Spring Boot 程序自动启动的最佳实践

在实际部署 Spring Boot 项目的生产环境中&#xff0c;如何确保服务自动启动&#xff08;如开机自动运行、宕机自动恢复&#xff09;是一项基础而关键的运维能力。本文将系统介绍如何在 Linux 中将 Spring Boot 应用注册为 systemd 服务&#xff0c;实现进程守护与自动启动。&a…

如何建立项目团队的自驱力文化?

建立项目团队的自驱力文化&#xff0c;关键在于赋权机制、目标共创、持续反馈、内在激励、价值认同。 其中&#xff0c;“目标共创”尤其重要。项目成员若未参与目标制定&#xff0c;仅被动接受任务&#xff0c;将很难激发责任感和参与热情。反之&#xff0c;通过共创目标&…

【React Native】布局文件-底部TabBar

布局文件-底部tabBar 内容配置 export default function Layout() {return (<Tabs />); }默认会将布局文件是将与它在同一个目录的所有文件&#xff0c;包括下级目录的文件&#xff0c;全都配置成Tab了。&#xff1a; 这样做显然不对&#xff0c;正确的做法是 在app目…

CompareFace使用

CompareFace 使用 CompareFace 有三种服务&#xff0c;分别是人脸识别&#xff08;RECOGNITION&#xff09;、人脸验证&#xff08;VERIFICATION&#xff09;、人脸检测&#xff08;DETECTION&#xff09;。 人脸识别其实就是人脸身份识别(每张照片只有一个人脸)&#xff0c;…

APP测试之Monkey压力测试

&#xff08;一&#xff09;Monkey简介 Monkey意指猴子&#xff0c;顽皮淘气。所以Monkey测试&#xff0c;顾名思义也就像猴子一样在软件上乱敲按键&#xff0c;猴子什么都不懂&#xff0c;就爱捣乱。 Monkey 是 Android SDK 自带的命令行工具&#xff0c;它通过向系统发送伪…

时序大模型为时序数据库带来的变革与机遇

时序数据&#xff08;Time Series Data&#xff09;作为记录系统状态随时间变化的重要数据类型&#xff0c;在物联网、金融交易、工业监控等领域呈爆炸式增长。传统时序数据库专注于高效存储和查询时序数据&#xff0c;而时序大模型&#xff08;Time Series Foundation Models&…

深入核心:理解Spring Boot的三大基石:起步依赖、自动配置与内嵌容器

深入核心&#xff1a;理解Spring Boot的三大基石&#xff1a;起步依赖、自动配置与内嵌容器 摘要&#xff1a;在上一章&#xff0c;我们领略了Spring Boot带来的革命性开发体验。但魔法的背后&#xff0c;必有其科学的支撑。本章将带你深入Spring Boot的内核&#xff0c;系统性…

达梦数据库配置兼容MySQL

前言 作为一名数据库管理员或开发者&#xff0c;当项目需要从MySQL迁移到达梦数据库时&#xff0c;最关心的莫过于兼容性问题。达梦作为国产数据库的佼佼者&#xff0c;提供了良好的MySQL兼容模式&#xff0c;今天我就来分享一下如何配置达梦数据库以实现对MySQL的兼容。 一、为…

js与vue基础学习

vue创建项目 安装node安装node、npm、cnpm node -v npm -v #npm服务器位置处于国外&#xff0c;下载包的速度会比较缓慢。阿里为国内用户提供的cnpm&#xff0c;他是npm的镜像&#xff0c;下载第三方包时&#xff0c;们完全可以使用cnpm来替代npm。 cnpm -v在node中执行JavaScr…

【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库

文章目录一、项目介绍二、适用场景三、功能模块四、功能特点五、效果展示六、开源地址一、项目介绍 LiveCharts2 是一个开源、简单、灵活、交互式且功能强大的 .NET 图表库。LiveCharts2 现在几乎可以在任何地方运行&#xff1a;Maui、Uno Platform、Blazor-wasm、WPF、WinFor…

使用Whistle自定义接口返回内容:Mock流式JSON数据全解析

一.mock接口返回数据流程 定位目标接口 在Whistle的Network面板中找到需要Mock的接口&#xff0c;右键点击请求信息&#xff0c;选择COPY -> URL复制完整URL&#xff0c;确保URL路径精确到具体接口。准备Mock数据 点击对应接口&#xff0c;在右侧面板切换到response标签页&a…

【前端】富文本编辑器插件 wangEditor 5 基本使用(Vue2)

https://www.wangeditor.com/v5 一、安装 首先安装editor yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save安装Vue2组件 yarn add wangeditor/editor-for-vue # 或者 npm install wangeditor/editor-for-vue --save或者Vue3 yarn add wangeditor/…

自适应哈希索引 和 日志缓冲区

目录 1. 自适应哈希索引在内存中的位置 2. 自适应哈希索引的作用 3. 为什么要创建自适应哈希索引 4. 适应哈希索引的Key -Value如何设置&#xff1f; 5. 日志缓冲区在内存中的位置 6. 日志缓冲区的作用 7. 日志不通过LogBuffer直接写入磁盘不行吗&#xff1f; 1. 自适应哈…