当前位置: 首页 > news >正文

Python爬虫进阶——案例:模拟bilibili登录)

        主要内容:模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式, 输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮。

1、第一步:通过selenium模块访问bilibili的登录页面,定位并单击账号登陆按钮,然后分别定位账号和密码输入框,并输入账号和密码。

2、第二步:识别图片中图形的位置。

3、第三步:进行按照图形识别顺序进行点击。

4、第四步:点击确认标签。

##############################
##作者:白雪公主的后妈
##时间:2024年1月12日
##主题:Python爬虫进阶——案例:模拟bilibili登录
##主要内容:模拟bilibili登录
##############################
'''
模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式,
输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮
'''
#第一步:通过selenium模块访问bilibili的登录页面,定位并单击账号登陆按钮,然后分别定位账号和密码输入框,并输入账号和密码。
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
#################################
import base64
import json
import requests
import pandas as pd
#################################
# from PIL import Image
service = Service('E:\\python\\Scripts\\chromedriver.exe')      #实例化一个谷歌浏览器
browser = webdriver.Chrome(service=service)
browser.get('https://www.bilibili.com/')   #访问bilibili的登录页面                           #访问淘宝网页首页login_user_page = browser.find_element(By.XPATH,'//*[@id="i_cecream"]/div[2]/div[1]/div[1]/ul[2]/li[1]/li/div/div/span')      #通过XPath表达式定位'账号登陆'按钮
login_user_page.click()             #单击账号登录按钮
time.sleep(2)
username_input = browser.find_element(By.XPATH,'//*[@class="login-pwd-wp"]/form/div[1]/input')        #通过标点ID定位账号输入框
password_input = browser.find_element(By.XPATH,'//*[@class="login-pwd-wp"]/form/div[3]/input')        #通过标点ID定位密码输入框
username_input.send_keys('123456')          #在账号框中输入123456
time.sleep(2)                               #停留两秒,模拟真是人类操作
password_input.send_keys('234567')          #在密码框中输入234567
login_button = browser.find_element(By.XPATH,'//*[@class="btn_primary "]')      #通过XPath表达式定位'登陆'按钮
login_button.click()             #单击账号登录按钮
time.sleep(2)#第二步:识别图片中图形的位置
#############################
def base64_api(uname, pwd, img):'''验证码识别函数:param uname: 快识别用户名:param pwd:   快识别密码:param img:   图片路径:return:      返回坐标点'''with open(img, 'rb') as f:base64_data = base64.b64encode(f.read())b64 = base64_data.decode()data = {"username": uname, "password": pwd, "typeid": 21, "image": b64}result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)if result['success']:return result["data"]["result"]else:# !!!!!!!注意:返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别return result["message"]
############################## 解决验证码自动识别问题
Img_input = browser.find_element(By.XPATH,'//*[@class="geetest_holder geetest_silver"]')
Img_input.screenshot('yzm.png')#对图片进行解码,获取验证码识别以后的结果
result = base64_api('XXXX','XXXX','yzm.png')
# print('验证码识别结果:',result)      #结果33,254|232,70|214,133|90,236
result_list = result.split('|')
print(result_list)#第三步:进行按照图形识别顺序进行点击 借助selenium执行点击操作
for i in result_list:x = result_list.split(',')[0]       #构建x,y轴坐标y = result_list.split(',')[1]#ActionChains为动作链对象,指定标签元素进行点击(Img_input, int(x), int(y)),click()点击操作,perform()执行动作链ActionChains(browser).move_to_element_with_offset(Img_input, int(x), int(y)).click().perform()
time.sleep(2)#第四步:点击确认标签
OK_button = browser.find_element(By.XPATH, '//*[@class="geetest_commit_tip"]')
OK_button.click()
time.sleep(4)
browser.quit()                                  #关闭所有页面,退出浏览器驱动程序

相关文章:

Python爬虫进阶——案例:模拟bilibili登录)

主要内容:模拟bilibili账号密码登录,不要实现的的实现功能是单击登录按钮,切换登录方式, 输入账号和密码,然后完成图片点击验证,最后单击立即登录按钮。 1、第一步:通过selenium模块访问bilibi…...

什么是数据分析?

什么是数据分析? 数据分析(Data Analysis)是指通过对数据进行收集、整理、处理、建模和解读,以揭示数据中的有用信息、支持决策和解决实际问题的过程。它是一门将数据转化为知识的学科,广泛应用于商业、科学研究、医疗…...

基于springboot的课程作业管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的课程作业管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 可以管理首页、个人中心…...

多线程之旅:属性及其基本操作

上次分享到了,多线程中是是如何创建的,那么接下来,小编继续分享下多线程的相关知识。 多线程中的一些基本属性。 基本属性 属性获取方法IDgetId()名称getName()状态getState()优先级getPriority()是否后台线程isDemo()是否存活isAlive()是…...

数据表中的数据插入、更新和删除

文章目录 一、表的插入二、更新表中的数据记录三、删除表中的数据记录 一、表的插入 插入数据记录是常见的数据操作,可以显示向表中增加的新的数据记录。在MySQL中可以通过“INSERT INTO”语句来实现插入数据记录,该SQL语句可以通过如下4种方式使用&…...

Q_OBJECT宏报错的问题

在Qt中继承QObject,并且加上Q_OBJECT宏,有时候会报错,比如我的错误: error: debug/httpmgr.o:httpmgr.cpp:(.rdata$.refptr._ZTV7HttpMgr[.refptr._ZTV7HttpMgr]0x0): undefined reference to vtable for HttpMgr 意思是没有虚…...

提升性能300ms:深入解析Spring多表联接查询优化与SQL调优实战

优化所需知识点(必须掌握) 索引篇 explain命令 重点:这是后续分析是否使用索引以及使用是否恰当的工具 作用:查看sql的执行计划,可以看sql语句是否使用了索引,索引的使用情况,以及sql的性能。 …...

增量导入和全量导入的区别是什么?

定义 全量导入:是指将数据源中的所有数据一次性全部导入到目标系统中。例如,一个电商公司要将其旧数据库中的所有商品信息(包括商品名称、价格、库存等)全部迁移到新的数据库系统中,这个过程就是全量导入。这种方式会覆…...

【百度智能云客悦智能客服】搭建AI agent智能对话 - 购车推荐

前期准备 平台链接:https://keyue.cloud.baidu.com/ 一、开始创建 二、会话流程配置 我们以购车推荐的案例,来进行 AI agent 配置演示 1.添加开场白 在 起始主题 画布中,我们可以配置 AI agent 的开场白,画布左侧默认有 开始 …...

【HTML+CSS+JS+VUE】web前端教程-3-标题标签

标题介绍与应用 标题是通过<h1>-<h6>标签进行定义的 <h1>定义最大的标题 <h6>定义最小的标题<h1...

逐笔成交逐笔委托Level2高频数据下载和分析:20250102

level2逐笔成交逐笔委托下载 链接: https://pan.baidu.com/s/1p7OOj5p-QGFrWkt6KKoYng?pwd7f4g 提取码: 7f4g Level2逐笔成交逐笔委托数据分享下载 通过Level2逐笔成交和逐笔委托这种每一笔的毫秒级别的数据可以分析出很多有用的点&#xff0c;包括主力意图&#xff0c;虚假动…...

JavaEE之线程池

前面我们了解了多个任务可以通过创建多个线程去处理&#xff0c;达到节约时间的效果&#xff0c;但是每一次的线程创建和销毁也是会消耗计算机资源的&#xff0c;那么我们是否可以将线程进阶一下&#xff0c;让消耗计算机的资源尽可能缩小呢&#xff1f;线程池可以达到此效果&a…...

java 中 main 方法使用 KafkaConsumer 拉取 kafka 消息如何禁止输出 debug 日志

pom 依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.5.14.RELEASE</version> </dependency> 或者 <dependency><groupId>org.ap…...

【后端面试总结】Golang可能的内存泄漏场景及应对策略

Golang可能的内存泄漏场景及应对策略 一、引言 Golang作为一种高性能、并发友好的编程语言&#xff0c;其内置的垃圾回收机制极大地简化了内存管理。然而&#xff0c;这并不意味着开发者可以完全忽视内存泄漏问题。在实际开发中&#xff0c;由于不当的资源管理、循环引用、以…...

Java 反射机制详解

在 Java 编程世界中&#xff0c;反射机制犹如一把神奇的钥匙&#xff0c;它能够打开许多隐藏在代码深处的 “大门”&#xff0c;让开发者突破常规的限制&#xff0c;实现一些极具灵活性的功能。今天&#xff0c;就跟随我一同深入探究 Java 反射机制的奥秘。 一、什么是反射 反…...

【k8s】scc权限 restricted、anyuid、privileged

文章目录 概述1. 内置的scc2. OpenShift如何确定pod的scc2.1 Pod未带SCC标签的情况2.2. Pod带有SCC标签的情况 参考 概述 在OpenShift&#xff08;后文简称OCP&#xff09;中&#xff0c;很早就一个概念&#xff1a;Security Context Constraints &#xff0c;简称SCC&#xf…...

2025华数杯国际赛A题完整论文讲解(含每一问python代码+数据+可视化图)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2025“华数杯”国际大学生数学建模竞赛A题Can He Swim Faster的完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文…...

ThreadLocal 的使用场景

在现代电商平台中&#xff0c;ThreadLocal 常用于以下场景&#xff0c;特别是与线程隔离相关的业务中&#xff0c;以提高性能和简化上下文传递。 1. 用户上下文信息管理 场景&#xff1a;在用户发起的每次请求中&#xff0c;需要携带用户 ID、角色、权限等信息&#xff0c;而这…...

后端开发 Springboot整合Redis Spring Data Redis 模板

目录 redis 配置 RedisConfig 类 完整代码 代码讲解 1. 类定义和注解 2. 定义 RedisTemplate Bean 3. 配置 JSON 序列化 4. 配置 Redis 的 key 和 value 序列化方式 5. 完成配置并返回 RedisTemplate 总结 redis 服务接口实现类 类级别 注入 RedisTemplate 常用 Re…...

代码随想录算法训练营第 4 天(链表 2)| 24. 两两交换链表中的节点19.删除链表的倒数第N个节点 -

一、24. 两两交换链表中的节点 题目&#xff1a;24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 视频&#xff1a;帮你把链表细节学清楚&#xff01; | LeetCode&#xff1a;24. 两两交换链表中的节点_哔哩哔哩_bilibili 讲解&#xff1a;代码随想录 dummy-…...

【RDMA学习笔记】1:RDMA(Remote Direct Memory Access)介绍

从帝国理工的PPT学习。 什么是RDMA Remote Direct Memory Access&#xff0c;也就是Remote的DMA&#xff0c;是一种硬件机制&#xff0c;能直接访问远端结点的内存&#xff0c;而不需要处理器介入。 其中&#xff1a; Remote&#xff1a;跨node进行数据传输Direct&#xff…...

网络安全常见的35个安全框架及模型

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 01、概述 网络安全专业机构制定的一套标准、准则和程序&#xff0c;旨在帮助组织了解和管理面临的网络安全风险。优秀的安全框架及模型应该为用户提供一种可靠方法&#xff0c;帮助其实现网络安全建设…...

Elasticsearch介绍及使用

Elasticsearch 是一款基于 Lucene 库构建的开源、分布式、RESTful 风格的搜索引擎和分析引擎&#xff0c;具有强大的全文搜索、数据分析、机器学习等功能&#xff0c;广泛应用于日志分析、实时数据分析、全文检索等场景。 核心概念 索引&#xff08;Index&#xff09;&#xf…...

Leetocde516. 最长回文子序列 动态规划

原题链接&#xff1a;Leetocde516. 最长回文子序列 class Solution { public:int longestPalindromeSubseq(string s) {int n s.size();vector<vector<int>> dp(n, vector<int>(n, 1));for (int i 0; i < n; i) {dp[i][i] 1;if (i 1 < n &&…...

iOS 逆向学习 - Inter-Process Communication:进程间通信

iOS 逆向学习 - Inter-Process Communication&#xff1a;进程间通信 一、进程间通信概要二、iOS 进程间通信机制详解1. URL Schemes2. Pasteboard3. App Groups 和 Shared Containers4. XPC Services 三、不同进程间通信机制的差异四、总结 一、进程间通信概要 进程间通信&am…...

高级生化大纲

一&#xff0c;蛋白质化学&#xff1a; 蛋白质分离是生物化学和分子生物学研究中的一项基本技术&#xff0c;用于根据蛋白质的物理和化学特性将其从混合物中分离出来。 1. 离心分离法 离心分离法利用离心力来分离不同质量或密度的颗粒和分子。 差速离心&#xff1a;通过逐…...

YARN WebUI 服务

一、WebUI 使用 与HDFS一样&#xff0c;YARN也提供了一个WebUI服务&#xff0c;可以使用YARN Web用户界面监视群集、队列、应用程序、服务、流活动和节点信息。还可以查看集群详细配置的信息&#xff0c;检查各种应用程序和服务的日志。 1.1 首页 浏览器输入http://node2.itc…...

【Unity3D】利用IJob、Burst优化处理切割物体

参考文章&#xff1a; 【Unity】切割网格 【Unity3D】ECS入门学习&#xff08;一&#xff09;导入及基础学习_unity ecs教程-CSDN博客 【Unity3D】ECS入门学习&#xff08;十二&#xff09;IJob、IJobFor、IJobParallelFor_unity ijobparallelfor-CSDN博客 工程资源地址&…...

【大前端】Vue3 工程化项目使用详解

目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …...

基于文件系统分布式锁原理

分布式锁&#xff1a;在一个公共的存储服务上打上一个标记&#xff0c;如Redis的setnx命令&#xff0c;是先到先得方式获得锁&#xff0c;ZooKeeper有点像下面的demo,比较大小的方式判决谁获得锁。 package com.ldj.mybatisflex.demo;import java.util.*; import java.util.co…...

专业网站建设公司郑州/营销活动方案模板

【中央处理器】 1CPU的组成&#xff1a;CPU主要由运算器、控制器、寄存器组和片内总线等 2控制器&#xff1a;由程序计数器(PC)、指令寄存器(IR)、指令译码器(ID)、时序产生器、操作控制器等组成 控制器的主要功能&#xff1a;(1)、从内存中取出一条指令&#xff0c;并指出下…...

wordpress调用文章内容标签/百度sem是什么

本文将分以下几个小节来学习&#xff1a; Java的JavaScript脚本引擎脚本开发中涉及到的类和接口简介开发步骤脚本与java数据传递脚本执行上下文作用域方法的调用编译脚本作用域 上例中"ScriptContext.GLOBAL_SCOPE"就是作用域。 ScriptContext的属性以及Bindings接口…...

成都青羊建设厅官方网站/seo推广软件哪个好

双子序列和Description: 描述&#xff1a; This is a standard interview problem to print the longest Bitonic subsequence using Dynamic programming. 这是使用动态编程打印最长的Bitonic子序列的标准面试问题。 Problem statement: 问题陈述&#xff1a; Given an arr…...

动态asp.net网站开发教程/网店推广的渠道有哪些

此处用的是和eclipse 先与资源库同步 弹出窗口Synchronize(同步) 一般操作&#xff1a;先更新代码&#xff0c;在提交代码。先把资源库上其他人提交的代码更新下来&#xff0c;在把自己的代码提交上去。更新的文件只要没有红色的提示&#xff0c;都是不会覆盖自己写的代码的&am…...

电商网站方案建设/白帽seo是什么

导入第三方库时提醒找不到 在安装指令包名前加types/ npm install types/XXX npm install types/react-transition-group引入本地图片时 不能直接在src中写路径 import logo from ../assets/images/home/logo.png<img className{"logoStyle"} src{logo} alt&q…...

地方门户网站有哪些/推广普通话绘画

Python中的大数据分析正在复兴。这一切都是从NumPy开始的&#xff0c;它也是我在本文中介绍的工具背后的构建块之一。2006年&#xff0c;大数据这个话题逐渐受到关注&#xff0c;尤其是随着Hadoop的发布。Pandas因为它的数据帧而紧随其后。2014年是大数据成为主流的一年&#x…...