zoukankan      html  css  js  c++  java
  • python爬虫selenium相关

    首先上很好用的selenium中文文档,基本上所有问题都能通过阅读此文档解决。可惜好像没找到翻译者名称。

    https://python-selenium-zh.readthedocs.io/zh_CN/latest/

    安装selenium库以及配置环境

    安装就是正常的pip install selenium即可,重点在于配置浏览器驱动。

    selenium支持控制chrome,firefox,ie等浏览器,当然也可以反过来说这些浏览器支持被selenium控制。但需要各自配套的浏览器驱动,并且浏览器驱动版本必须和自己安装的浏览器版本同代(比如76.2和76.0.1都是76这样子)。

    个人推荐使用chrome,因为文档中给出了chrome的各版本驱动下载链接不用麻烦去找了(https://python-selenium-zh.readthedocs.io/zh_CN/latest/7.6%20%E6%B5%8F%E8%A7%88%E5%99%A8%E9%A9%B1%E5%8A%A8/)。

    不过如果真用chrome的话,最好还是翻到官网下推荐的稳定驱动版本(https://sites.google.com/a/chromium.org/chromedriver/downloads

    下载前先在chrome的设置-关于Chrome里找到chrome版本,如图中就是80.0.3987.163:

    之后就是在那个链接里找到最接近的版本,浏览器版本对浏览器驱动版本向下兼容(也就是说选择80.0.3987.106的稳定驱动版本是可以运行的)

    使用selenium

    虽然有开头那个文档就够了,不过大概写一些吧。

    1.基本

    用browser=webdriver.chrome()就能获得一个chrome浏览器的控制柄类似的实例,其它浏览器同理。

    之后用browser.get("website")就能真正地打开一个浏览器窗口,也可以不开,同样只需要对browser设置一下即可。

    比较好用的是selenium可以执行javascript代码,实现上滑页面下拉页面之类的。大致用法就是browser.execute_script("js代码")。

    用于控制鼠标位置的控制链最开始用起来有点玄学,但基本上按照:定义控制链-定位元素位置-移动鼠标到目标位置-执行点击-perform这个步骤来就不会出错了。代码上的话就类似如下:

    # action为行为控制链对象实例
    actions=ActionChains(browser)
    target=browser.find_element_by_xpath("XPath")    
    actions.move_to_element(target)
    actions.click()
    actions.perform()

    2.一定要注意驱动版本和浏览器版本对应。如果报错“Unknown Error:call function result missing 'value' ”,就很有可能是因为版本不匹配导致的!

    3.如果进行某种操作过后,比如控制鼠标点击了某button,页面的各元素会发生变化的话,这时候就不能再使用同一个actions继续操作页面了,要新定义一个控制链实例。如果报错“stale element reference: element is not attached to the page document”,就要考虑可能是这个原因导致了问题。

    4.很多时候光是selenium无法完成所有工作,还是要自己写一些工具类脚本配合使用。又以及和其它库,如BeautifulSoup,urljoin(用来合并相对路径和绝对路径!究极好用!)的联合使用。

  • 相关阅读:
    k3sk8s集群-node节点设置不可调度或者删除node节点
    CentOS8防暴力破解fail2ban
    网站挂马情况处理
    linux给普通用户赋予sudo权限免密码
    Mockito (二十四)
    Mockito (二十三)
    Mockito (二十二)
    Mockito (二十一)
    Mockito (二十)
    Mockito (十九)
  • 原文地址:https://www.cnblogs.com/lingchuL/p/12643505.html
Copyright © 2011-2022 走看看