1.selenium携带用户数据
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
service = Service(executable_path='chromedriver.exe')
option = webdriver.ChromeOptions()
user_data_dir=r'C:\Users\12501\AppData\Local\Google\Chrome\User Data' #这里只写到
User Data 目录, 用户名可能不同, 根据自己电脑路径去写
option.add_argument(f'--user-data-dir={user_data_dir}')
driver = webdriver.Chrome(service=service, options=option)
driver.get('https://www.baidu.com')
携带用户数据访问谷歌浏览器,防止频繁访问被qiang,相比直接selenium=自动化检测要高级一点 ;
2.selenium绕过检测
os.chdir(r"C:\Program Files\Google\Chrome\Application")
os.popen('chrome --remote-debugging-port=9527 --user-data-dir="D:\programming_tools\selenium"')
# os.popen(r'.\chrome.exe --remote-debugging-port=9527 --user-data-dir="D:\programming_tools\selenium"')
options = Options()
# options.add_argument('--headless') # 添加 无头模式 配置
options.add_experimental_option("debuggerAddress", "127.0.0.1:9527")
driver = webdriver.Chrome(options=options)
推荐:此方法属于大神操作,基本不会被qiang,对一些需要频繁访问的网站,可以试试,主要原理是 selenium启动的chrome是自定义的浏览器,不是直接电脑上安装的浏览器,所有会被访问网站认为是真实用户的请求;(此方法也需要谷歌驱动)
3.selenium无头模式
from selenium.webdriver.chrome.options import Options # 导入谷歌浏览器的配置对象
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains # 导入鼠标动作链功能
options = Options() # 实例化一个谷歌浏览器的配置对象
options.add_argument('--headless') # 添加 无头模式 配置
service = Service(executable_path='chromedriver.exe')
driver = webdriver.Chrome(service=service, options=options) # 创建浏览器对象的时候添加配置
driver.get('https://www.baidu.com/')
print(driver.page_source)
input()
driver.quit()
selenium的无头模式 防止检测占用视图,可以去干一些其他事情;
4.selenium句柄切换
selenium操作页面时,若打开一个新页面,需要切换一下句柄,若每次点击都将打开一个新页面,则可以操作完新页面后,将新页面关闭,并将句柄调回到旧页面中,继续旧页面的操作;
# 存储当前窗口的句柄
original_window_handle = driver.current_window_handle
# 对当前旧窗口进行一些操作,点击后会跳转到新的页面
# 出现新页面后,存储所有窗口句柄
window_handles = driver.window_handles
# 切换到新窗口或新标签页
for handle in window_handles:
if handle != original_window_handle:
driver.switch_to.window(handle)
break
# 对新页面进行操作 xpath等
# 关闭新页面,并将句柄调回到旧页面
driver.close()
# 切换回原来的窗口
driver.switch_to.window(original_window_handle)
推荐几个网站:
https://spidertools.cn/#/formatHeader 爬虫工具库
https://googlechromelabs.github.io/chrome-for-testing/ 谷歌驱动下载
https://blog.csdn.net/weixin_45081575/article/details/126585575 selenium绕过检测网站
(上述各个部分相互独立,可直接使用)
标签:webdriver,句柄,driver,window,检测,options,selenium From: https://blog.csdn.net/weixin_50845028/article/details/142029366