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 ...
最新文章
- FPGA(1)基础入门 -- 按键控制led灯
- 用一个比喻说明项目里各个成员的角色
- java oracle行锁,Oracle 出现行锁 错误代码 ora-02049
- 手持终端机USB无法同步连接是什么意思?
- 笔记-中项案例题-2017年上-风险管理
- 主键与聚集索引的区别
- 微服务之:从零搭建ocelot网关和consul集群
- linux如何杀死ping进程,linux下ping命令使用详解
- 接VS2010+Net+MVC3+EF4.1环境下的Code First一文的补充说明
- boost升压电路工作原理
- mysql根据15位或者18位身份证号计算年龄的自定义函数
- 经典胶片图像效果lr预设
- Android技术分享| 实现视频连麦直播
- jQuery插件库免下载做法
- 【100%通过率】华为OD机试真题 Python 实现【获取最大软件版本号】【2022.11 Q4 新题】
- linux 极路由救砖,极路由HC5761A救砖日志
- 21世纪最佳创业项目
- labview+PLC程序+OPC完整项目程序Labview和西门子PLC smart200 OPC通讯仪器串口通讯
- 收件人信息已满,系统无法将你的邮件递送什么意思?
- Android Studio项目打包生成可安装在自己手机上的App安装包文件