python之selenium接管打开的谷歌浏览器窗口——隐藏爬虫特征,跳过登陆弹窗验证

文章目录

引言

我们知道通过selenium打开的浏览器与本地电脑上打开的浏览器是不同的,selenium通过插件打开浏览器页面会显示爬虫特征信息,且在访问某些网站时,很容易被检测出是一个爬虫机器,从而强制跳出登陆弹窗;有的登陆弹窗还会拒绝你的登陆验证;如:

案例:通过selenuium打开淘宝主页搜索 '美食',进入详情页,跳出登陆弹窗**

python 复制代码
# 导入模块
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

# 生成浏览器对象
browser = webdriver.Chrome()

# 访问网页
browser.get('https://www.taobao.com')

# 向搜索框中输入 '美食'
input = browser.find_element(By.ID, 'q')
input.send_keys('美食')
input.send_keys(Keys.ENTER)  # 点击回车,进入详情页

执行效果:

解决方法:我们可以通过打开本地谷歌浏览器,访问淘宝,不会跳出登陆弹窗;用动图显示:

使用selenium接管打开的谷歌浏览器

从上面我们知道本地谷歌浏览器访问淘宝页面时,不会跳出弹窗登陆验证,那么如何使用python代码来自动化的打开浏览器,并利用selenium接管打开的浏览器,对其进行控制;如下:

借鉴文章:https://blog.csdn.net/weixin_45081575/article/details/126389273

直接上代码:

python 复制代码
# 导入模块
import os # 用于执行windows命令
from selenium import webdriver
from selenium.webdriver.common.by import By  # 选择器,用于筛选网页数据
from selenium.webdriver.common.keys import Keys   # 按键,指代电脑上的某些按键

# 用os.popen方法执行windows命令,打开谷歌浏览器;注意:也可以手动打开浏览器,这里我通过os模块用命令打开
os.popen('start chrome --remote-debugging-port=9527 --user-data-dir=""')

# selenium接管已经打开的浏览器窗口
# 1、创建文本对象
options = webdriver.ChromeOptions()
# 2、向文件对象中写入参数
options.add_experimental_option("debuggerAddress","127.0.0.1:9527")
# 3、将参数传入浏览器对象,接管浏览器
browser = webdriver.Chrome(options=options)
'''
注意:selenium 一次只能控制一个浏览器页面,若打开多个浏览器标签或窗口,
那么只有最初打开的窗口会受selenium控制
'''

# 访问网页
browser.get('https://www.taobao.com')

# 向搜索框中输入 '美食'
input = browser.find_element(By.ID, 'q')
input.send_keys('美食')
input.send_keys(Keys.ENTER)  # 点击回车,进入详情页,不会跳出登陆弹窗
print(browser.page_source) # 返回网页源码

执行效果:

总结

总的来说,直接使用selenium打开谷歌浏览器,在访问很多网站时,容易出现各种验证,而通过本地谷歌浏览器去在访问这些网站时,出现验证的几率很小,当然不是所有的网站都是这样,有些网站必须要登陆才能显示页面,那么只能老老实实去登陆验证了;上述方法就是通过os模块调用windows命令打开本地谷歌浏览器后,在通过selenium去接管打开的浏览器,这样就可以使用selenium控制本地谷歌浏览器了

爬虫案例推荐:https://blog.csdn.net/m0_59470317/article/details/142902162

相关推荐
alvin_200510 分钟前
python之OpenGL应用(五)变换
python·opengl
深蓝电商API17 分钟前
服务器部署爬虫:Supervisor 进程守护
爬虫·python
是梦终空11623 分钟前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
竹林81835 分钟前
用Python requests搞定Cookie登录,我绕过了三个大坑才成功
爬虫·python·自动化运维
MIXLLRED1 小时前
Python模块详解(一)—— socket 和 threading 模块
开发语言·python·socket·threading
Jay-r1 小时前
OpenClaw养龙虾工具安全风险分析:五大隐患及防护建议引言
网络·python·安全·web安全·ai助手·openclaw
C蔡博士2 小时前
最近点对问题(Closest Pair of Points)
java·python·算法
APIshop2 小时前
Java调用亚马逊商品详情API接口完全指南
java·开发语言·python
nimadan122 小时前
**豆包seed写剧本2025指南,AI编剧工具实战应用解析**
人工智能·python
沉下去,苦磨练!2 小时前
python的if __name__ == ‘__main__‘
python