51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【周活动】 找茬--心里圈的故事 !【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【106期】:如何树立正确使用Python做开发的习惯 【征稿】提交你的测试成绩单! 【专题】用尽一切办法只为让你学好用例 自学软件测试那点事
查看: 238|回复: 0

Selenium的使用

[复制链接]

该用户从未签到

发表于 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, 就不用吧.
回复

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2019-9-18 05:06 , Processed in 0.057947 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2019 Comsenz Inc.

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