51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2031|回复: 0
打印 上一主题 下一主题

Selenium的使用

[复制链接]
  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-6-18 10:01:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Selenium 是为了测试而出生的. 但是没想到到了爬虫的年代, 它摇身一变, 变成了爬虫的好工具. 让我试着用一句话来概括 Seleninm: 它能控制你的浏览器, 有模有样地学人类”看”网页.

    那么你什么时候会要用到 Selenium 呢? 当你:

    • 发现用普通方法爬不到想要的内容
    • 网站跟你玩”捉迷藏”, 太多 JavaScript 内容
    • 需要像人一样浏览的爬虫
    安装 Selenium

    因为 Selenium 需要操控你的浏览器, 所以安装起来比传统的 Python 模块要多几步. 先在 terminal 或者 cmd 用 pip 安装 selenium.


    1. # python 2+
    2. pip install selenium

    3. # python 3+
    4. pip3 install selenium
    复制代码

    要操控浏览器, 你就要有浏览器的 driver. Selenium 针对几个主流的浏览器都有 driver. 针对 Linux 和 MacOS.

    Linux 和 MacOS 用户下载好之后, 请将下载好的”geckodriver”文件放在你的计算机的 “/usr/bin” 或 “/usr/local/bin” 目录. 并赋予执行权限, 不会放的, 请使用这条语句.

    1. sudo cp 你的geckodriver位置 /usr/local/bin
    2. sudo chmod +x /usr/local/bin/geckodriver
    复制代码

    对于 Windows 用户, 官网上的说法, 好像没有提到要具体怎么操作, 我想, 应该是把 geckodriver 这个文件的位置加在 Windows 的环境变量中(PATH).

    如果你安装有任何的问题, 请在它们的官网上查询解决方案.

    偷懒的火狐浏览器插件
    插件 Katalon Recorder

    这个插件能让你记录你使用浏览器的操作. 我以前玩网游, 为了偷懒, 用过一个叫”按键精灵”的东西, 帮我做了很多重复性的工作, 拯救了我的鼠标和键盘, 当然还有我的手指! 看着别人一直在点鼠标, 我心中暗爽~ 这个 Katalon Recorder 插件 + Selenium 就和按键精灵是一个意思. 记录你的操作, 然后你可以让电脑重复上千遍.

    安装好火狐上的这个插件后, 打开它.

    找到插件上的 record, 点它. 然后用火狐登录上 莫烦Python, 开始你的各种点击工作, 比如我的一连串操作是 (强化学习教程->About页面->赞助页面->教程->数据处理->网页爬虫)

    每当你点击的时候, 插件就会记录下你这些点击, 形成一些log. 最后神奇的事情将要发生. 你可以点击 Export 按钮, 观看到帮你生成的浏览记录代码!


    Python 控制浏览器

    好了, 有了这些代码, 我们就能回到 Python. 开始写 Python 的代码了. 这里十分简单! 我将 selenium 绑定到 Chrome 上 webdriver.Chrome(). 你可以绑其它的浏览器.


    复制代码







    driver = webdriver.Chrome()     # 打开 Chrome 浏览器







    # 将刚刚复制的帖在这



    driver.get("https://morvanzhou.github.io/")



    driver.find_element_by_xpath(u"//img[@alt='强化学习 (Reinforcement Learning)']").click()



    driver.find_element_by_link_text("About").click()



    driver.find_element_by_link_text(u"赞助").click()



    driver.find_element_by_link_text(u"教程 ▾").click()



    driver.find_element_by_link_text(u"数据处理 ▾").click()



    driver.find_element_by_link_text(u"网页爬虫").click()







    # 得到网页 html, 还能截图



    html = driver.page_source       # get html



    driver.get_screenshot_as_file("./img/sreenshot1.png")



    driver.close()




    我们能得到页面的 html code (driver.page_source), 就能基于这个 code 来爬取数据了.


    最后, Selenium 的优点我们都看出来了, 可以很方便的帮你模拟你的操作, 添加其它操作也是非常容易的, 但是也是有缺点的, 不是任何时候 selenium 都很好. 因为要打开浏览器, 加载更多东西, 它的执行速度肯定没有其它模块快. 所以如果你需要速度, 能不用 Selenium, 就不用吧.
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-18 16:34 , Processed in 0.064596 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表