【爬虫】selenium打开浏览器以及页面

本篇探讨如何使用 selenium 打开浏览器

selenium 基础与网页打开

selenium 是一个广泛应用于自动化测试和网页抓取的工具,它能够模拟用户在浏览器中的各种操作。首先,我们需要根据指定的浏览器类型(这里以 Chrome 为例)打开网页。以下是相关代码示例:

python 复制代码
from selenium import webdriver


def web_create(self, web_type, value):
    """
    打开网页
    :param web_type: 浏览器类型
    :param value: 网页地址
    :return: 网页对象
    """
    if web_type.lower() == "chrome":
        # 设置Chrome选项,包括隐藏Selenium特征、设置代理IP和排除或关闭一些Selenium相关开关
        # 参考:https://blog.csdn.net/XianZhe_/article/details/120929106
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-automation'])
        options.add_argument('--disable-blink-features=AutomationControlled')
        options.add_argument('--disable-extensions')
        # options.add_argument('--disable-gpu')
        # options.add_argument('--disable-infobars')
        options.add_argument('--disable-notifications')
        # options.add_argument('--disable-popup-blocking')
        # options.add_argument('--disable-web-security')
        # options.add_argument('--ignore-certificate-errors')
        # options.add_argument('--no-sandbox')
        # 最大化窗口
        options.add_argument('--start-maximized')
        # 无痕浏览模式
        options.add_argument('--incognito')
        # options.add_argument('--user-data-dir=/dev/null')
        # options.add_argument('--proxy-server={}'.format(proxy_address + ':' + proxy_port))
        # options.add_argument('--proxy-auth={}:{}'.format(proxy_username, proxy_password))
        # options.add_experimental_option('excludeSwitches', ['enable-automation', 'useAutomationExtension'])

        driver = webdriver.Chrome(options=options)  # 创建Chrome浏览器驱动实例
        # 隐藏navigator.webdriver标志,将其值修改为false或undefined
        driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
            'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
        })
        # 设置user-agent,改变user-agent的值
        user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
        driver.execute_cdp_cmd("Network.setUserAgentOverride", {"userAgent": user_agent})

        driver.get(value)  # 打开指定的网页地址
        return driver
    else:
        raise ValueError("目前只支持chrome类型的浏览器")

在上述代码中,我们创建了 web_create 函数。它首先判断浏览器类型是否为 chrome,如果是,则创建 Chrome 浏览器驱动实例。接着,通过执行 CDP 命令来隐藏 navigator.webdriver 标志,修改 user-agent,以此来规避一些网站对 selenium 的检测。最后,打开指定的网页地址并最大化窗口,返回浏览器驱动对象,以便后续操作。

所有打开浏览器参数参考:

List of Chromium Command Line Switches << Peter Beverloo

相关推荐
fox_lht8 小时前
第一章 不可变的变量
开发语言·后端·rust
骁的小小站9 小时前
Verilator 和 GTKwave联合仿真
开发语言·c++·经验分享·笔记·学习·fpga开发
心灵宝贝11 小时前
申威架构ky10安装php-7.2.10.rpm详细步骤(国产麒麟系统64位)
开发语言·php
lly20240611 小时前
PHP 字符串操作详解
开发语言
像是套了虚弱散13 小时前
DevEco Studio与Web联合开发:打造鸿蒙混合应用的全景指南
开发语言·前端·华为·harmonyos·鸿蒙
旭意13 小时前
C++蓝桥杯之结构体10.15
开发语言·c++
飞翔的佩奇13 小时前
【完整源码+数据集+部署教程】【天线&水】舰船战舰检测与分类图像分割系统源码&数据集全套:改进yolo11-repvit
前端·python·yolo·计算机视觉·数据集·yolo11·舰船战舰检测与分类图像分割系统
麦麦鸡腿堡14 小时前
Java的单例设计模式-饿汉式
java·开发语言·设计模式
简单点了14 小时前
go前后端项目的启动 、打包和部署
开发语言·后端·golang
木头左14 小时前
最大回撤约束下ETF多因子动态止盈参数校准方案
python