• Chrome启动选项


    1. Chrome Options

    这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象传入,则可以实现以特定参数启动Chrome。

    1.1. 例子

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    # 实例化一个启动参数对象
    chrome_options = Options()
    # 添加启动参数
    chrome_options.add_argument('--window-size=1366,768')
    # 将参数对象传入Chrome,则启动了一个设置了窗口大小的Chrome
    browser = webdriver.Chrome(chrome_options=chrome_options)

    1.2. 常用的启动参数

    启动参数作用
    --user-agent="" 设置请求头的User-Agent
    --window-size=1366,768 设置浏览器分辨率
    --headless 无界面运行
    --start-maximized 最大化运行
    --incognito 隐身模式
    --disable-javascript 禁用javascript
    --disable-infobars 禁用浏览器正在被自动化程序控制的提示

    1.2.1. 禁用图片加载

    Chrome的禁用图片加载参数设置比较复杂,如下所示:

    prefs = {
        'profile.default_content_setting_values' : {
            'images' : 2
        }
    }
    options.add_experimental_option('prefs',prefs)

    1.2.2. 禁用浏览器弹窗

    使用浏览器时常常会有弹窗弹出,以下选项可以禁止弹窗:

    prefs = {  
        'profile.default_content_setting_values' :  {  
            'notifications' : 2  
         }  
    }  
    options.add_experimental_option('prefs',prefs)

    1.2.3.设置chrome的下载路径

        prefs = {
        "download.default_directory":"D:\"
        }
        chromeOptions.add_experimental_option("prefs", prefs)

    1.2.4 设置编码格式

    # 设置默认编码为 utf-8,也就是中文
    options = webdriver.ChromeOptions()
    options.add_argument('lang=zh_CN.UTF-8')

    1.2.5 模拟移动设备

    移动设备user-agent表格:http://www.fynas.com/ua

    因为移动版网站的反爬虫的能力比较弱

    # 通过设置user-agent,用来模拟移动设备
    # 比如模拟 android QQ浏览器
    options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')
    
    # 模拟iPhone 6
    options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')

    1.2.6 为selenium爬虫添加代理

    这个地方尤其需要注意的是,在选择代理时,尽量选择静态IP,才能提升爬取的稳定性。因为如果选择selenium来做爬虫,说明网站的反爬能力比较高(要不然直接上scrapy了),对网页之间的连贯性,cookies,用户状态等有较高的监测。如果使用动态匿名IP,每个IP的存活时间是很短的(1~3分钟)

    from selenium import webdriver
    # 静态IP:102.23.1.105:2005
    # 阿布云动态IP:http://D37EPSERV96VT4W2:CERU56DAEB345HU90@proxy.abuyun.com:9020
    PROXY = "proxy_host:proxy:port"
    options = webdriver.ChromeOptions()
    desired_capabilities = options.to_capabilities()
    desired_capabilities['proxy'] = {
        "httpProxy": PROXY,
        "ftpProxy": PROXY,
        "sslProxy": PROXY,
        "noProxy": None,
        "proxyType": "MANUAL",
        "class": "org.openqa.selenium.Proxy",
        "autodetect": False
    }
    driver = webdriver.Chrome(desired_capabilities = desired_capabilities)
  • 相关阅读:
    招聘.Net中高级软件研发工程师
    布局和救火
    UITableView详解(转)
    iOS开发那些事--性能优化–内存泄露问题的解决(转)
    LeeCode(PHP) 2.add-two-numbers
    LeeCode(PHP) 1.Two Sum
    PHP实现 序列帧拆分
    PHPExcel导出大量数据超时及内存错误解决方法(转)
    laravel路由 实现短连接生成及跳转(php 301重定向)
    从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续(面试题)
  • 原文地址:https://www.cnblogs.com/lvchengda/p/12627179.html
Copyright © 2020-2023  润新知