11.8 用selenium 模块控制浏览器
selenium 模块让Python 直接控制浏览器,实际点击链接,填写登录信息,几乎
就像是有一个人类用户在与页面交互。与Requests 和Beautiful Soup 相比,Selenium
允许你用高级得多的方式与网页交互。但因为它启动了Web 浏览器,假如你只是想
从网络上下载一些文件,会有点慢,并且难以在后台运行。
附录A 有安装第三方模块的详细步骤。
11.8.1 启动selenium 控制的浏览器
对于这些例子,你需要FireFox 浏览器。它将成为你控制的浏览器。如果你还
没有FireFox,可以从http://getfirefox.com/免费下载它。
导入selenium的模块需要一点技巧。不是import selenium,而是要运行from selenium
import webdriver(为什么selenium 模块要使用这种方式设置?答案超出了本书的范围)。
之后,你可以用selenium 启动FireFox 浏览器。在交互式环境中输入以下代码:
>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> type(browser)
<class 'selenium.webdriver.firefox.webdriver.WebDriver'>
>>> browser.get('http://inventwithpython.com')
你会注意到,当 webdriver.Firefox()被调用时,FireFox 浏览器启动了。对值
webdriver.Firefox()调用 type(),揭示它具有 WebDriver 数据类型。调用 browser.
get('http://inventwithpython.com')将浏览器指向http://inventwithpython.com/。浏览器
应该看起来如图11-7 所示。
图11-7 在IDLE 中调用webdriver.Firefox()和get()后,FireFox 浏览器出现了

表11-3 selenium 的WebDriver 方法,用于寻找元素
方法名 返回的WebElement 对象/列表
browser.find_element_by_class_name(name)
browser.find_elements_by_class_name(name)
使用CSS 类name 的元素
browser.find_element_by_css_selector(selector)
browser.find_elements_by_css_selector(selector)
匹配CSS selector 的元素
browser.find_element_by_id(id)
browser.find_elements_by_id(id)
匹配id 属性值的元素
browser.find_element_by_link_text(text)
browser.find_elements_by_link_text(text)
完全匹配提供的text 的<a>元素
browser.find_element_by_partial_link_text(text)
browser.find_elements_by_partial_link_text(text)
包含提供的text 的<a>元素
browser.find_element_by_name(name)
browser.find_elements_by_name(name)
匹配name 属性值的元素
browser.find_element_by_tag_name(name)
browser.find_elements_by_tag_name(name)
匹配标签name 的元素
(大小写无关,<a>元素匹配'a'和'A')

用selenium 模块控制浏览器的更多相关文章

  1. selenium模块控制浏览器

    利用selenium模块控制浏览器 导入selenium模块:from selenium import webdriver browserFirefox = webdriver.Firefox()#打 ...

  2. python selenium模块调用浏览器的时候出错

    python selenium模块使用出错,这个怎么改 因为不同版本更新不同步问题,浏览器都要另外下一个驱动.

  3. 爬虫(五)—— selenium模块启动浏览器自动化测试

    目录 selenium模块 一.selenium介绍 二.环境搭建 三.使用selenium模块 1.使用chrome并设置为无GUI模式 2.使用chrome有GUI模式 3.查找元素 4.获取标签 ...

  4. Python+Selenium学习--控制浏览器控制条

    场景 有时候web 页面上的元素并非直接可见的,就算把浏览器最大化,我们依然需要拖动滚动条才能看到想要操作的元素,这个时候就要控制页面滚动条的拖动,但滚动条并非页面上的元素,可以借助JavaScrip ...

  5. selenium webdriver——控制浏览器

    from selenium import webdriver import time def controlBrowser(): #启动浏览器 driver = webdriver.Firefox() ...

  6. 爬虫之selenium模块;无头浏览器的使用

    一,案例 爬取站长素材中的图片:http://sc.chinaz.com/tupian/gudianmeinvtupian.html import requests from lxml import ...

  7. python Web抓取(二)selenium模块的使用、对浏览器的按键操作及错误处理

    建议以下帖子: 教你在Windows上搭建Python+Selenium环境:https://blog.csdn.net/huilan_same/article/details/52888262 py ...

  8. python-web-selenium模拟控制浏览器

    用 selenium 模块控制浏览器 启动 selenium 控制的浏览器 from selenium import webdriver brower = webdriver.Firefox() br ...

  9. 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求

    第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求 selenium模块 selenium模块为 ...

随机推荐

  1. [洛谷P4962]朋也与光玉

    题目大意:有一张$n(n\leqslant100)$个点$m(m\leqslant n(n-1)$条边的有向图,每个点有一个颜色,需要找到一条长度为$k(k\leqslant13)$,恰好经过全部$k ...

  2. [洛谷P3250][HNOI2016]网络

    题目大意:给定一棵树.有三种操作: $0\;u\;v\;t:$在$u$到$v$的链上进行重要度为$t$的数据传输. $1\;x:$结束第$x$个数据传输. $2\;x:$询问不经过点$x$的数据传输中 ...

  3. C++中数组和vector

    本文基于邓俊辉编著<数据结构(C++语言版)(第3版)>.<C++ Primer(第5版)>以及网上的相关博文而写,博主水平有限,若有不妥处,欢迎指出. 一.数组 C++中数组 ...

  4. [Leetcode] valid palindrome 验证回文

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  5. IDEA中使用Docker: 图形化 or 命令行 ,你更稀罕那个??

    Docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. 容器是完全使用沙箱机 ...

  6. Kindle 电子书相关的工具软件【转】

    这里是与 Kindle 电子书相关的工具软件.它们可以帮助我们解决在日常使用电子书时所可能遇到的问题,比如 kindle 管理工具.kindle 转换工具.kindle电子书制作工具.kindle 推 ...

  7. sed 用法 转https://www.cnblogs.com/Dev0ps/p/8441255.html

    假设文档内容如下: [root@localhost ~]# cat /tmp/input.txt null test 要求:在1111之前添加AAA,方法如下: sed -i 's/指定的字符/要插入 ...

  8. navicat for mysql无法连接数据库和连接数据库慢的问题

    首先在自己虚拟机上登录mysql: mysql -uroot -p 然后赋予权限 GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '1234 ...

  9. [nginx]proxy_pass&rewrite知识点

    While passing request nginx replaces URI part which corresponds to location with one indicated in pr ...

  10. POJ 2429 long long 质因数分解

    GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16206   Accepted: ...