selenium爬虫常见基本配置

  一般情况下,我们常使用requests和selenium帮助我们获取网页数据,当然requests相对selemium速度要快得多,但很多requests爬取不到的数据,使用selenium却可以爬取到。正因为selemium速度比较慢(等待网页加载、网页中图片加载等问题),我们通常使用selenium获取网页数据时会使用一些配置,比如不希望加载图片等的配置,提升获取数据的速度。

  本文主要针对以下问题进行输出:解决DevToolsActive文件不存在的报错、隐藏滚动条 —> 应对一些特殊页面(有的网站每页获取的数据较长,不模拟人工滚动下滑页面就无法获取底部数据)、谷歌文档规避bug、不加载图片、取消测试环境、无头模式 —> 浏览器不提供可视化页面、去除navigator.webdriver属性等问题

from selenium import webdriver

# 1、创建设置对象
options = webdriver.ChromeOptions()

# 2、解决DevToolsActive文件不存在的报错
options.add_argumwnt('--no-sanbox')

# 3、谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--disable-gpu')

# 4、隐藏滚动条,应对一些特殊页面
options.add_argument('--hide-scrollbars')

# 5、不加载网页中的图片选其一
#(1)不加载图片,提升速度
options.add_argument('blink-settings=imagesEnable=false')
#(2)不加载图片,提升速度
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})

# 6、设置取消测试环境
options.add_experimental_option('excludeSwitches', ['enable-automation'])

# 7、无头模式   -   浏览器不提供可视化页面
# linux下如果系统不支持可视化不加这条会启动失败(无头浏览器)
# 减少了资源消耗的同时,增加了被反爬的风险
options.add_argument('--headless')


# 设置代理
options.add_argument('--proxy-server=http://代理服务器:端口')

# 避免终端下执行代码报错
options.add_experimental_option("excludeSwitches", ['enable-automation', 'enable-logging'])

# 加载拓展插件
# options.add_extension(插件路径)

# 设置请求头
UA = "Mozilla…………"
options.add_argument(f"--user-agent={UA}")

# 设置配置
browser = webdriver.Chrome(options=options)

# 加载用户缓存
# 可以像正常使用浏览器一样,记录使用记录和cookie
# 如果不指定缓存路径,不指定的时候会创建临时文件夹。
# 如果selenium实例没有正常销毁,那么当前缓存文件夹不会被删除。
user_dir = r'C:\userDir'
options.add_argument(f"--user-data-dir={user_dir}")

# 去除navigator.webdriver属性
browser.execute_cdp_cmd(
    "Page.addScriptToEvaluateOnNewDocument",
    {
        "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
    }
)
# 或者
options.add_argument("disable-blink-features=AutomationControlled")

URL = 'https://www.baidu.com/'
# 加载页面
browser.get(URL)

这类配置是固定好的,everybody可以用专门的文件夹保存起来,需要使用的时候直接复制在相应的代码程序中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值