0


Selenium基础(爬虫基础_2)

文章目录

1 selenium

1.1 selenium了解

什么是selenium?

(1)Selenium是一个用于Web应用程序测试的工具。
(2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
(3)支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试。
(4)selenium也是支持无界面浏览器操作的。
作用:
模拟浏览器功能,自动执行网页中的js代码,实现动态加载

如何安装selenium?

  1. 操作谷歌浏览器驱动下载地址(大版本一致即可) http://chromedriver.storage.googleapis.com/index.html 其他浏览器:

edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
火狐: https://github.com/mozilla/geckodriver/releases

  1. 查看谷歌浏览器版本 谷歌浏览器右上角‐‐>帮助‐‐>关于在这里插入图片描述
  2. 下载selenium pip install selenium

1.2 使用步骤

#selenium的使用步骤?#(1)导入:from selenium import webdriver
#(2)创建谷歌浏览器操作对象:
path ='谷歌浏览器驱动文件路径'
browser = webdriver.Chrome(path)#(3)访问网址
url ='要访问的网址'
browser.get(url)

1.3 selenium的元素定位

元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,
点击、输入等等。操作这些元素前首先
要找到它们,WebDriver提供很多定位元素的方法
方法:
    1,3,5方式最常用

# 1.find_element_by_id(id=‘su’)
    button = browser.find_element_by_id('su')# 2.find_elements_by_name(name=‘wd’)
    name = browser.find_element_by_name('wd')# 3.find_elements_by_xpath (标签名+id值)
    xpath1 = browser.find_elements_by_xpath('//input[@id="su"]')# 4.find_elements_by_tag_name (标签名)
    names = browser.find_elements_by_tag_name('input')# 5.find_elements_by_css_selector (bs4)
    my_input = browser.find_elements_by_css_selector('#kw')[0]# 6.find_elements_by_link_text(a标签)
    browser.find_element_by_link_text("新闻")

1.4 访问元素信息

获取元素属性
    .get_attribute('class')
    
获取元素文本
    .text
    
获取标签名
    .tag_name

1.5 交互

点击:
    click()
输入:
    send_keys()
后退操作:
    browser.back()
前进操作:
    browser.forword()
模拟JS滚动:
    js='document.documentElement.scrollTop=100000'
    browser.execute_script(js) 执行js代码
获取网页代码:
    page_source
退出:
    browser.quit()

2 Chrome handless

可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致

1.系统要求:
Chrome
    Unix\Linux 系统需要 chrome >= 59
    Windows 系统需要 chrome >= 60
    Python3.6及以上
    Selenium==3.4.*及以上
    ChromeDriver==2.31 及以上
    

2.配置:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.add_argument('‐‐headless')
    chrome_options.add_argument('‐‐disable‐gpu')
    # 日志的打印级别,禁用headless的默认输出
    chrome_options.add_argument('--log-level=3')
    #自己的谷歌安装路径
    path = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
    chrome_options.binary_location = path
    browser = webdriver.Chrome(options=chrome_options)
    browser.get('http://www.baidu.com/')

3.配置封装:
    from selenium import webdriver
    #这个是浏览器自带的 不需要我们再做额外的操作
    from selenium.webdriver.chrome.options import Options
    def share_browser():
        #初始化
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        # 禁用GPU加速
        chrome_options.add_argument('‐‐disable‐gpu')
        # 日志的打印级别,禁用headless的默认输出
        chrome_options.add_argument('--log-level=3')
        # 如果“--log-level”不起作用,在加上:options.add_experimental_option('excludeSwitches', ['enable-logging'])
    
        #浏览器的安装路径 打开文件位置
        #这个路径是你谷歌浏览器的路径
        path = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
        chrome_options.binary_location = path
        browser = webdriver.Chrome(options=chrome_options)
        return browser
    封装调用:
    from handless import share_browser
    browser = share_browser()
    browser.get('http://www.baidu.com/')
    #拍一张快照
    browser.save_screenshot('handless1.png')

常用options参数

options.add_argument('--disable-infobars')  # 禁止策略化

options.add_argument('--no-sandbox')  # 解决DevToolsActivePort文件不存在的报错

options.add_argument('window-size=1920x3000')  # 指定浏览器分辨率

options.add_argument('--disable-gpu')  # 谷歌禁用GPU加速

options.add_argument('--incognito')  # 隐身模式(无痕模式)

options.add_argument('--disable-javascript')  # 禁用javascript

options.add_argument('--start-maximized')  # 最大化运行(全屏窗口),不设置,取元素会报错

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

options.add_argument('blink-settings=imagesEnabled=false')  # 不加载图片, 提升速度

options.add_argument('--headless')  # 浏览器不提供可视化页面(无头模式). linux下如果系统不支持可视化不加这条会启动失败

options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  # 手动指定使用的浏览器位置

chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  #调用原来的浏览器,不用再次登录即可重启

options.add_argument('lang=en_US') # 设置语言

options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')

prefs = {"":""}

prefs["credentials_enable_service"] = False

prefs["profile.password_manager_enabled"] = False

chrome_option_set.add_experimental_option("prefs", prefs) # 屏蔽'保存密码'提示框

针对chrome76版本及以上版本,需要去掉Chrome提示受到自动软件控制使用:

option.add_argument('disable-infobars') #去掉Chrome提示受到自动软件控制

在chrome76版本及以上版本,需要使用

chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])   #以开发者模式启动调试chrome,可以去掉提示受到自动软件控制
chrome_options.add_experimental_option('useAutomationExtension', False)            #去掉提示以开发者模式调用

chrome_options.add_argument('--kiosk-printing')       #这样就可以静默打印,直接使用默认打印机进行打印。如需是Chrome全屏+静默打印: 使用" --kiosk --kiosk-printing" :浏览器默认是全屏显示,而且Esc、F11和鼠标右键都无法使用,在软件编程时,使用JS调用浏览器打印功能时,会跳过打印预览,直接进行打印操作。
标签: 爬虫 selenium python

本文转载自: https://blog.csdn.net/m0_58730471/article/details/128922396
版权归原作者 想要登顶的菜鸟 所有, 如有侵权,请联系我们删除。

“Selenium基础(爬虫基础_2)”的评论:

还没有评论