selenium 自动化 携带cookies模拟登陆哔哩哔哩并发送弹幕和评论(解决多窗口切换、规避检测、评论无法输入等问题)
获取cookies之后就可以自动登陆到哔哩哔哩,点击搜索到的视频,然后输入弹幕,发送弹幕,再点击评论,发送评论,这里有个问题就是运行几次之后发现评论直接sed_keys的话,会出现输入不进去的情况,然后再次检查网页源码,发现评论框有个ajax请求的动态加载,解决办法是先点击一下评论框,再输入评论内容就可以了
源码:
cookies获取(这里涉及窗口切换)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/1/3 18:14
# @Author : huni
# @File : 哔哩哔哩cookies.py
# @Software: PyCharm
from selenium import webdriver
from time import sleep
import json
if __name__ == '__main__':driver = webdriver.Chrome(executable_path='./chromedriver.exe')driver.maximize_window()driver.get('https://www.bilibili.com/')sleep(6)# driver.switch_to.frame(driver.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe')) # 切换浏览器标签定位的作用域driver.find_element_by_xpath('//*[@id="internationalHeader"]/div[1]/div/div[3]/div[2]/div[1]/div/span/div/span').click()window_list = driver.window_handles # 获取窗口列表driver.switch_to.window(window_list[0]) # 切换第一个窗口driver.close() # 关闭第一个窗口window_list = driver.window_handles # 获取窗口列表driver.switch_to.window(window_list[0]) # 切换第一个窗口sleep(10)dictCookies = driver.get_cookies() # 获取list的cookiesjsonCookies = json.dumps(dictCookies) # 转换成字符串保存with open('哔哩哔哩_cookies.txt', 'w') as f:f.write(jsonCookies)print('cookies保存成功!')
再携带cookies登录到哔哩哔哩进行一系列操作(涉及窗口切换,规避检测,评论框加载)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/1/3 18:19
# @Author : huni
# @File : 携带cookies模拟登陆哔哩哔哩.py
# @Software: PyCharm
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep
import json
def browser_initial():# chrome_options = Options()# chrome_options.add_argument('--headless')# browser = webdriver.Chrome(options=chrome_options)options = webdriver.ChromeOptions()# -- 防止被检测,旧版本用法(1):# chrome在79版之前用这个options.add_experimental_option("excludeSwitches", ["enable-automation"])options.add_experimental_option('useAutomationExtension', False)browser = webdriver.Chrome(executable_path='./chromedriver.exe',options=options)browser.maximize_window()browser.get('https://www.bilibili.com/')return browserdef log_csdn(browser):with open('哔哩哔哩_cookies.txt', 'r', encoding='utf8') as f:listCookies = json.loads(f.read())# 往browser里添加cookiesfor cookie in listCookies:cookie_dict = {'domain': '.bilibili.com','name': cookie.get('name'),'value': cookie.get('value'),"expires": '','path': '/','httpOnly': False,'HostOnly': False,'Secure': False}browser.add_cookie(cookie_dict)sleep(3)browser.refresh() # 刷新网页,cookies才成功browser.find_element_by_xpath('//*[@id="nav_searchform"]/input').send_keys('毕导') # 输入关键词browser.find_element_by_xpath('//*[@id="nav_searchform"]/div').click() # 点击搜索window_list = browser.window_handles # 获取窗口列表browser.switch_to.window(window_list[1]) # 切换第1窗口browser.find_element_by_xpath('//*[@id="all-list"]/div[1]/div[2]/ul[1]/li/div[2]/div[1]/a[1]').click() # 点击主页window_list = browser.window_handles # 获取窗口列表browser.switch_to.window(window_list[2]) # 切换第2窗口browser.find_element_by_xpath('//*[@id="page-index"]/div[1]/div[2]/div/div[1]/a[1]/img').click() # 点击最新一期视频window_list = browser.window_handles # 获取窗口列表browser.switch_to.window(window_list[3]) # 切换第3窗口sleep(12)browser.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[15]').click() # 点击播放sleep(2)browser.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[2]/div/div[2]/div[3]/div[''1]/input').send_keys('针不戳') # 填写弹幕内容browser.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[2]/div/div[2]/div[3]/div[2]').click() # 点击发送弹幕# 执行一组js程序browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') # 执行一组js代码,向下滚动一屏sleep(5)tex = browser.find_element_by_tag_name('textarea') # 定位评论框tex.click() # 先点击评论框tex.send_keys('不错') # 再填写评论内容sleep(3)browser.find_element_by_xpath('//*[@id="comment"]/div/div[2]/div/div[3]/div[2]/button').click() # 点击发送评论sleep(3)browser.quit()if __name__ == "__main__":browser = browser_initial()log_csdn(browser)
后记
大家如果觉得小编的代码有用,可以多多关注小编,
同时小编的公众号也开通了,大家可以关注下,后续进行粉丝回馈,大家一起学习python叭
打赏小编点这里哦
selenium 自动化 携带cookies模拟登陆哔哩哔哩并发送弹幕和评论(解决多窗口切换、规避检测、评论无法输入等问题)相关推荐
- php selenium模拟登陆,python+selenium自动化实战携带cookies模拟登陆微博
首先获取cookies,使用手机扫码登录斗鱼,然后利用网页cookies保存在本地 有些同学可能会问,这不是相当于自己登录了吗,还模拟什么呢,其实来说这是一次获取cookies可以使用很久 #!/us ...
- 爬取新浪微博新闻(selenium),包括模拟登陆,数据存储等(适合初学者)
爬取新浪微博(模拟登陆,数据存储) 写在最开头 下载浏览器驱动 测试驱动是否匹配/font> 模拟登陆 分析待爬取页面信息 保存数据 程序github地址 写在最开头 该程序主要是为爬取新浪微博 ...
- selenium使用账号密码模拟登陆淘宝,使用账号密码!
1,需要相关的库如下 from selenium import webdriver from selenium.webdriver.common.action_chains import Action ...
- selenium使用账号密码模拟登陆淘宝,使用账号密码
1,需要相关的库如下 from selenium import webdriver from selenium.webdriver.common.action_chains import Action ...
- Selenium+PhantomJS QQ空间模拟登陆
QQ空间模拟登陆... 一般套路:浏览器监控切换到Network,然后输入账号密码,然后点击登录...但是加密啊那些很多 很多请求之类的 瞎搞. 太麻烦了.然而我们写代码的懂不起那些. 言归正传,C# ...
- 爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常
1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib.urllib3模块简化很多,操作更加人性化. ...
- python+Selenium自动化操作Chrome模拟手机浏览器
在使用Chrome浏览网页时,我们可以使用Chrome开发者工具模拟手机浏览器,在使用Selenium操作Chrome时同样也可以模拟手机浏览器.主要有以下两种用途. 测试H5页面在不同分辨率设备上的 ...
- python 爬虫 requests模块 中的Cookies 验证 通过验证cookies模拟登陆豆瓣登陆
在爬取某些数据时,需要进行网页的登陆,才可以进行数据的抓取工作.Cookies登陆就像很多网页中的自动登陆功能一样,可以让用户第二次登陆时不在需要验证账号和密码的情况下进行登陆.在requests模块 ...
- selenium模拟登陆豆瓣并获取cookies
验证码处理与模拟登陆豆瓣,首先我们看到豆瓣没有cookies,我们需要用程序来模拟登陆获取cookies(当前有些情况下自己手动登陆后复制粘贴cookies也能登陆),该文主要讲方法,如何用selen ...
最新文章
- DeepMind助力Waymo!提升自动驾驶AI准确率,还能加快模型训练
- 对于python来说、一个模块就是一个文件-彻底明白Python package和模块
- Java String.indexOf() 函数用法小结
- .so动态链接库文件
- Silverlight的资源
- 王道考研-计算机网络
- IntelliJ IDEA 创建 Vue工程
- L298Nnbsp;驱动模块的应用
- 并发编程 CAS算法
- msm8953 android8.1编译环境搭建
- 2022QS榜单发布!计算机专业排名MIT霸榜,清华排15,北大跌出TOP20
- matlab lstm工具箱,深度学习工具箱使用笔记---lstm网络(1)
- 通过SMART法则进行网站策划
- 记录贴:学习Andorid开发
- 一文带你了解Serverless架构及应用场景
- 一台计算机有两个用户怎样共享,两台计算机如何共享一台打印机?
- 移除元素---2022/03/16
- 建立名字为Project1的解决方案
- 将 zlib 引入到C++项目中 历程
- Oracle-SQL语句的逻辑读怎么计算
热门文章
- C++基础 - IO对象(流对象)状态,置位与复位
- 内审-20101126
- 博物馆展览馆智能互动多媒体中控系统场景触发视频播放器
- 免费而优秀的图表JS插件、js图表、html图表--百度的Echart、Highcharts、阿里的G2、Chart.js...
- 人工管理、文件系统和数据库系统的特点
- php生成随机唯一推荐码/邀请码/优惠码 固定长度
- 严格对角化(Exact diagonalization)介绍
- Cinema 4D自学笔记记录
- Linux系统下命令汇总
- Mac OS下的自带虚拟光驱