selenium 配置使用举例(1)

前言

  • 无头浏览需求

环境搭建起来之后,首先是要处理的问题是无头浏览器的配置使用。

因为我是部署在阿里云ES服务器上面,作为提供后台服务用的,不用浏览界面。

  • 访问的时候可能需要伪装和规避风险

因为访问的过程,我想尽可能让被访问端可以向对待手工操作浏览器那样对待我的

访问程序,不要歧视selenium的浏览器自动化。

  • 阿里云服务器上运行时候遇到了一些问题
>>> driver = webdriver.Chrome()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/django_web/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__
    desired_capabilities=desired_capabilities)
  File "/opt/django_web/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/opt/django_web/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/opt/django_web/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/opt/django_web/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
  (unknown error: DevToolsActivePort file doesn't exist)
  (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

其中‘selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally (unknown error: DevToolsActivePort file doesn't exist)’,需要配置

 chromeOptions.add_argument('--disable-dev-shm-usage')
  chromeOptions.add_argument('--no-sandbox') # 以根用户打身份运行Chrome,使用-no-sandbox标记重新运行Chrome,禁止沙箱启动
  • 其他配置说明
#其它设置(可选): 
#chromeOptions.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
#chromeOptions.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
#chromeOptions.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36")  #伪装其它版本浏览器,有时可以解决代码在不同环境上的兼容问题,或者爬虫cookie有效性保持一致需要设置此参数

selenium配置综合举例

#! /usr/bin/python3
# -*- coding:utf-8 -*-
# file: test_selenium.py
# author: wangchenxi
# mail: wangchenxi@cebvendor.com.cn
# brief:
# version: 0.1.00
# Create Time:2019-12-06 21:49:17
# Last Update: 2019-12-06 22时26分09秒
from selenium.webdriver.chrome.options import Options
from time import sleep
from selenium import webdriver

# 创建一个参数对象,用来控制chrome以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')  #不开启GPU加速
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) # 规避风险,像一个真的浏览器
#实例化一个浏览器对象
bro = webdriver.Chrome(executable_path=r'/bin/chromedriver',chrome_options=chrome_options)
bro.get('https://wangchenxi.top/')
sleep(2)
# bro.save_screenshot('1.png')
print(bro.page_source)
sleep(2)
bro.quit()

selenium已经能够使用并返回动态页面了,下一篇将添加一些其他操作,例如截图,动作链等。

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » selenium 配置使用举例(1)

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注