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

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

文章目录

  • 引言
  • 使用selenium接管打开的谷歌浏览器
  • 总结

引言

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

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

# 导入模块
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

直接上代码:

# 导入模块
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


http://www.mrgr.cn/news/49534.html

相关文章:

  • 监听下载上传进度
  • [STM32] 简单介绍 (一)
  • 现代数字信号处理I-P3 MVUE学习笔记
  • sqli-labs less-26 空格绕过
  • 微知-Bluefield DPU使用flint烧录固件报错MFE_NO_FLASH_DETECTED是什么?MFE是什么?
  • pip install spleeter-gpu下载失败
  • hbuildex运行微信小程序报错
  • C语言解决TopK问题
  • tiktok x-bougs signature 分析
  • leetcode 491.非递减子序列
  • WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析二
  • finebi面试题精选
  • 芋道快速开发平台学习笔记
  • AD9248驱动的简易示波器设计——FPGA学习笔记21
  • 三、ElementPlus下拉搜索加弹窗组件的封装
  • text2sql: multi-agent实现思路MAC-SQL
  • 动力电池SOC估算方法
  • AI 能否替代程序员?且听我来一唠!
  • 【MySQL】数据库基础指令(一)
  • QT开发--串口通信