py爬虫自学入门__8(Selenium库)

# 一、 Selenium 简介

#              Selenium 是一个自动化测试工具,支持多种浏览器(如chrome、safari、firefox、一些安卓浏览器等),主要用来

            解决JavaScript渲染的问题。

                Selenium通过给浏览器发送各种指令,来驱动浏览器去做出各种动作(跳转、输入、点击、下拉等等的操作)。可以              完全模拟网页加载,若爬虫过程中Requests库和urilb库无法正常爬取内容时,可以用Selenium库进行模拟js渲染,从而

            达到完整的爬取网页的效果。

#

# 二、 基本使用

#

#

# 三、 声明浏览器对象 (以Chrome浏览器为例)

#

#

# 四、 访问页面

          创建一个Chrome浏览器对象,并用webdriver类中的get()方法使其访问网页

#

# 五、 查找元素(获取元素的引用)

#    1> 查找一个元素(三种方式)

#        1) 查找示例

#

#        2)查找一个元素的其它一些方法(方法不同,查找所需的参数也不同)

#            find_element_by_name

#            find_element_by_xpath

#            find_element_by_link_text

#            find_element_by_partial_link_text

#            find_element_by_tag_name

#            find_element_by_css_selector

#        3)查找一个元素的一个通用方法

#

#    2> 查找多个元素

#        1)示例

#

#        2)查找一些元素的其它一些方法(方法不同,查找所需的参数也不同)

#            find_elements_by_name

#            find_elements_by_xpath

#            find_elements_by_link_text

#            find_elements_by_partial_link_text

#            find_elements_by_tag_name

#            find_elements_by_css_selector

#        3)查找一些元素的一个通用方法

#

#

# 六、 元素交互操作

#    

#    更多操作:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

# 七、 交互动作

#        将动作附加到动作链中串行执行

#

#     更多操作:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

#

# 八、 执行JavaScript

#      eg: 实现进度条下拉(直接用api方法实现有一定困难),可以通过使用JavaScript来实现。

#

#

# 九、 获取元素信息

#    1> 获取属性

#        eg: 获取知乎logo信息,并打印

#

#    2> 获取文本值

#

#    3> 获取ID、位置、标签名、大小

#

#

# 十、 Frame

#    在子frame中查找不到父frame中的元素,需要切换回父frame中进行查找

#

#

# 十一、 等待

#            selenium 在爬取网页时可能会有一些Ajax请求之类的,而selenium不会管你是否完成了网页的加载,他只负责加载框架

#        若其他的一些请求、元素未加载,则进行操作就会报错,所以需要加入一些等待,来确保操作的正常进行

#    1> 隐式等待

#         当使用了隐式等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,超出设定时间后则抛出找不#    到元素的异常, 换句话说,当查找元素或元素并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是0

#         *一般不会用隐式等待,网页加载速度都很快,只有在网速比较慢时使用。

#         使用implicitly_wait()来进行等待操作,参数为需要等待的时间,默认为0

#

#    2> 显式等待(常用)

#        1)特点: 指定一个等待条件,再指定一个最长等待时间,他会在最长等待时间内判断这个条件是否成立,如果成立,立#                          即返回,如果不成立,他会一直等待,直到等待到最长等待时间,如果还是不满足这个条件,他就会抛出异常

#                          如果在时间  内满足条件就会返回。

#        2)一些常见的等待条件:

#                           * title_is 标题是某内容
                             * title_contains  标题包含某内容
                             * presence_of_element_located 元素加载出,传入定位元组,如(By.ID, 'p')
                             * visibility_of_element_located  元素可见,传入定位元组
                             * visibility_of 可见,传入元素对象
                             * presence_of_all_elements_located 所有元素加载出
                             * text_to_be_present_in_element 某个元素文本包含某文字
                             * text_to_be_present_in_element_value  某个元素值包含某文字
                             * frame_to_be_available_and_switch_to_it  frame加载并切换
                             * invisibility_of_element_located 元素不可见
                             * element_to_be_clickable  元素可点击
                             * staleness_of  判断一个元素是否仍在DOM,可判断页面是否已经刷新
                             * element_to_be_selected  元素可选择,传元素对象
                             * element_located_to_be_selected  元素可选择,传入定位元组
                             * element_selection_state_to_be  传入元素对象以及状态,相等返回True,否则返回False
                             * element_located_selection_state_to_be  传入定位元组以及状态,相等返回True,否则返回False
                             * alert_is_present 是否出现Alert

#               详细内容:http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.support.expected_conditions

#        3)示例:

#

#

# 十二、 浏览器的前进和后退(back()、forward())

#

#

# 十三、 Cookies

#         用于需要登录的一些网址时,可以保持登录状态之类的操作。

#

#

# 十四、 选项卡管理(标签页管理)

#        1> 通过执行一个JS来打开一个网页的选项卡(常用)

                    这里其实是先获取两个选项卡(标签页)代号,然后通过代号进行切换选项卡

#

#

#    这不知道为什么会报warning???????

#        2> 通过控制键盘输入来进行标签页管理(即利用浏览器进行标签页操作的快捷键进行操作)

#

# 十五、 异常处理(会有各种各样的异常,这里只是演示)

#

#    异常处理详细文档:http://selenium-python.readthedocs.io/api.html#module-selenium.common.exceptions

#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值