目标:
    1:掌握怎么利用selenium配合浏览器打开指定网页
    2:掌握浏览器对象的一些常用方法以及属性
    3:掌握利用selenium+浏览器匹配数据的注意事项
    3:掌握浏览器对象在成功匹配指定节点后对这个结点的一些操作指令

    一:怎么利用selenium配合浏览器打开指定网页并且对网页进行一些操作

    语法:
    from selenium import webdriver 导入模块
    浏览器对象 = webdriver.Chrome( ) 打开Chrome浏览器(也可以是其他浏览器,前提是安装其他浏览器的驱动)
    浏览器对象.get(“指定网站”) 在Chrome浏览器内打开指定网站



    二:浏览器对象的一些常用方法以及属性

    答:在获得浏览器对象之后,我们可以对浏览器对象执行以下方法 其中browser代指浏览器对象


    browser.get(“指定网站”) :在浏览器内打开指定网站

    browser.maximizewindow( ):将浏览器窗口最大化

    browser.save_scrrenshot(“图片名称”):将浏览器当前所在的页面进行截图保存

    browser.page_scurce:获取浏览器当前页面的前端最终渲染的数据代码

    browser.page_scurce.find(“字符串”):获取浏览器当前页面的前端最终渲染的数据代码,并在代码中查找执行字符串,查不到直接返回-1,常常用于网站最后一页的判断

    browser.quit( ):关闭浏览器

    browser.close():关闭当前网页

    element_obj= browser.find
    elementby_xpath(xpath语法):在浏览器内获取第一个符合xpath语法的结点对象

    element_obj= browser.find_element_by_id (id属性值):在浏览器内获取第一个符合id属性值的结点对象

    element_obj= browser.find_element_by_name (name属性值):在浏览器内获取第一个符合name属性值的结点对象

    element_obj= browser.find_element_by_class_name (class属性值):在浏览器内获取第一个符合class属性值的结点对象

    element_obj= browser.find_element_by_link_text (a标签文本):在浏览器内获取第一个符合a标签内文本的结点对象

    element_obj_list = browser.find
    elements_by_xpath(xpath语法):在浏览器内获取全部符合xpath语法的结点对象,并且返回存放所有对象的列表



    三:利用selenium+浏览器匹配数据的注意事项


    1:浏览器对象在查找指定节点对象时,如果方法中的element不带s,那么就查找第一个符合规则的结点对象返回,如果带s,那就查找所有符合规则的结点对象,并且存放在指定列表中返回这个列表

    2:浏览器对象根据xpath查找指定节点时,可以直接在前端的控制台找到指定节点,右键复制当前节点的xpath即可,这是为什么呢?因为利用selenium获得的数据是前端最终渲染出来的数据,而不是响应源代码,因此利用selenium匹配数据真正实现了可见即可得,管你是动态渲染还是什么,只有一句话,牛批!

    图示:

    image.png



    四:浏览器对象在成功匹配指定节点后对这个结点的一些操作指令

    指定节点对象. send_keys(“待查找的数据”):向这个结点对象发送指定数据,一般这样的结点都是搜索框结点

    指定节点对象.click():点击这个结点

    指定节点对象.clear():清空结点对象中的内容(常用于清空搜索框中的默认数据)

    指定节点对象.get_attribute( ):获取这个结点的属性值
    指定节点对象.get_attribute( “title”):获取这个结点的 title 属性值


    指定节点对象.text :获取这个结点对象的文本值(包括当前节点以及所有子节点的文本)!

    注意事项:
    1:获取结点以及子节点的文本内容,是利用结点对象的text属性,而不是text方法!!!!,切记切记!!!
    2:浏览器对象.find_elements_by_xpath(xpath表达式)获取到所有符合xpath表达式的结点对象,这个结点对象与利用etree库的xpath表达式在响应源代码中提取的结点对象不一样!!!

    总结截图:

    image.png