1.selenium介绍

搜到了几种方法:1.urllib2,mechanize,单纯的访问web,不解析其js,css;2.selenium,利用浏览器,支持js,css等,具体包括打开浏览器和不需要打开浏览器两种方式,此外还有splinter,将selenium进行封装得到更顶层的API。目前仅仅试了一下selenium。

selenium是一种自动化测试工具,用来对web界面进行测试,它支持各种浏览器,包括 Chrome,Safari,Firefox ,IE等,支持多种语言开发,比如 Java,C,Ruby,python等等。

安装selenium

selenium库可以使用pip命令进行安装。

pip install selenium

Webdriver

使用不同的浏览器需要不同的webdriver,类似于驱动,chrome的叫chromedriver,firefox的是geckodriver。

Chromedriver下载地址国内无法访问,可以通过阿里的镜像https://npm.taobao.org/mirrors/chromedriver/下载。

Geckodriver为Firefox官方提供的Webdriver,下载地址https://github.com/mozilla/geckodriver/releases,官方说明如下:

Proxy for using W3C WebDriver-compatible clients to interact with Gecko-based browsers.

This program provides the HTTP API described by the WebDriver protocol to communicate with Gecko browsers, such as Firefox. It translates calls into the Firefox remote protocol by acting as a proxy between the local- and remote ends.

需要注意不同版本支持的Firefox版本也不同,将其放置在python安装根目录(与python.exe 同一目录),或者将放置geckodriver的目录添加到环境变量。

如果配置正确,使用下面的代码会自动打开一个firefox的界面。

from selenium import webdriver
driver = webdriver.Firefox()

2.使用selenium

打开网页

上面的代码实现了对浏览器对象的一个初始化,之后就可以使用driver对象,执行各种操作。

使用get()方法来请求一个网页,参数为网页URL。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.baidu.com")

运行后,会通过Firefox打开百度首页。

如果只是想通过python程序访问网页,不需要在浏览器中打开,可以使用headless。

Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有 Chrome 支持的特性运行你的程序。相比于现代浏览器,Headless Chrome 更加方便测试 web 应用,获得网站的截图,做爬虫抓取信息等。相比于出道较早的 PhantomJS,SlimerJS 等,Headless Chrome 则更加贴近浏览器环境。

Headless Firefox是相同的道理。加入下面的代码,就可以实现在程序运行中不打开Firefox的界面。

fireFoxOptions = webdriver.FirefoxOptions()
fireFoxOptions.set_headless()
driver = webdriver.Firefox(firefox_options = fireFoxOptions)

查找元素

要想对网页进行操作,首先要知道当前网页中有哪些元素,selenium提供了很多API

  • find_element_by_id:通过元素的id选择,例如:driver.find_element_by_id('loginForm')
  • find_element_by_name:通过元素的name选择,driver.find_element_by_name('password')
  • find_element_by_xpath:通过xpath选择,driver.find_element_by_xpath("//form[1]")
  • find_element_by_link_text:通过链接地址选择
  • find_element_by_partial_link_text:通过链接的部分地址选择
  • find_element_by_tag_name:通过元素的名称选择
  • find_element_by_class_name:通过元素的id选择
  • find_element_by_css_selector:通过css选择器选择

此外,还提供了通用的find_element()函数,查找方法为第一个参数,值为第二个参数,

例如:driver.find_element_by_id('loginForm') ,driver.find_element(By.ID,loginForm)

比如要选择baidu首页的搜索框,通过浏览器的检查元素功能,找到输入框的name = "wd"  id = "kw"

如下代码,分别使用id和name进行查找。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By   #需要import Bydriver = webdriver.Firefox()
driver.get("http://www.baidu.com")elem1 = driver.find_element_by_id("kw")
elem2 = driver.find_element_by_name("wd")
elem3 = driver.find_element(By.ID,"kw")
elem4 = driver.find_element(By.NAME,"wd")
print(elem1)
print(elem2)
print(elem3)
print(elem4)
driver.close()

得到输出如下,表示四种方法查找到的是同一元素。

<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="5f1054e8-e95c-4c81-847b-18afd6c06a4d", element="992e1af8-d1cd-49fb-9529-088e0280bacb")>
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="5f1054e8-e95c-4c81-847b-18afd6c06a4d", element="992e1af8-d1cd-49fb-9529-088e0280bacb")>
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="5f1054e8-e95c-4c81-847b-18afd6c06a4d", element="992e1af8-d1cd-49fb-9529-088e0280bacb")>
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="5f1054e8-e95c-4c81-847b-18afd6c06a4d", element="992e1af8-d1cd-49fb-9529-088e0280bacb")>

元素交互

下面的代码模拟搜索操作,查找到搜索框,输入内容,点击提交。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import Bydriver = webdriver.Firefox()
driver.get("http://www.baidu.com")elem = driver.find_element_by_id("kw")
elem.send_keys("hello")
elem.send_keys(Keys.RETURN)

使用上一节的方法定位到搜索框后,利用 Keys 这个类来模拟键盘输入,输入文字用send_keys()方法,另外还有按钮点击,用click()方法。更多的操作可以参见官方文档的交互动作介绍

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

3.参考

https://zhuanlan.zhihu.com/p/27100187 初探 Headless Chrome

https://blog.csdn.net/BalterNotz/article/details/79181088 Python Selenium Headless Firefox配置

https://zhuanlan.zhihu.com/p/29435831 Python3中Selenium使用方法

https://zhuanlan.zhihu.com/p/31127896 4.3 通过selenium 模拟浏览器抓取

通过selenium实现模拟浏览器操作相关推荐

  1. java使用selenium实现模拟浏览器操作API大全 模拟登录

    java selenium 模拟登录 模拟浏览器 API大全 (一)环境安装之Java (二)环境安装之IntelliJ IDEA (三)环境安装之Selenium 1.通过jar包安装 2.通过Ma ...

  2. python selenium+Firefox 模拟浏览器操作

    glumer Python安装selenium,配置火狐浏览器环境 火狐浏览器直接从网上下载即可, geckodriver的下载链接:https://github.com/mozilla/geckod ...

  3. 孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1

    孤荷凌寒自学python第八十五天配置selenium并进行模拟浏览器操作1 (完整学习过程屏幕记录视频地址在文末) 要模拟进行浏览器操作,只用requests是不行的,因此今天了解到有专门的解决方案 ...

  4. python 模拟用户点击浏览器_使用python进行模拟浏览器操作

    使用python完成模拟浏览器操作主要是使用selenium来模拟浏览器,当然还要带上浏览器的驱动比如chromedriver.exe的驱动. 一般使用selenium进行模拟操作需要注意引入一下几个 ...

  5. python采集直播间数据_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  6. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...

    本文实例讲述了Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息.分享给大家供大家参考,具体如下: import time from multiprocessing import Poo ...

  7. python 模拟浏览器selenium_使用python selenium webdriver模拟浏览器

    原博文 2016-12-18 18:26 − selenium是进行web自动化测试的一个工具,支持C,C++,Python,Java等语言,他能够实现模拟手工操作浏览器,进行自动化,通过webdri ...

  8. selenium+python模拟浏览器进入好友QQ空间留言

    我们要模拟浏览器登陆qq空间并进入好友空间留言,首先要安装自动化测试工具selenium,它支持多种浏览器,我这里使用的是谷歌浏览器.使用谷歌浏览器需要下载chromedriver.exe,驱动版本要 ...

  9. Python|几十行代码带你简单实现模拟浏览器操作

    本文只是实现了一个简单的功能,欢迎大佬们指点和改进. 首先,本文需要的工具 Python3.6 selenium 不会安装selenium?只需在CMD里输入以下代码就自动给你安装了. pip ins ...

最新文章

  1. CVS代码管理的一个小错误
  2. TensorFlow Serving 尝尝鲜
  3. 这些面试中的智力题,你都会了吗
  4. logback logback.xml 常用配置详解
  5. android 自定义域名,Android 懒加载优化
  6. eleTree树形插件引入
  7. Python:代码规范和命名规范
  8. DB2数据库常用基本操作命令
  9. Japan树状数组求逆序数
  10. 《零基础入门学习Python》学习过程笔记【40类和对象的相关内置函数】
  11. visio业务流程图教学_Visio流程图入门
  12. 第一代计算机硬件逻辑主要采用,第一代计算机的硬件逻辑主要采用电子管,程序设计语言采用BASIC语言...
  13. 厦门大学c语言2017,厦门大学2017年各专业录取分数线
  14. 【 MATLAB 】 LLS algorithm Simulation of TOA - Based Positioning
  15. idea创建三种应用程序的方法:springboot,控制台程序,windows服务程序
  16. 联想小新pro16锐龙版和酷睿版的区别 哪个好
  17. 【SLAM文献】2017-2018 CVPR ICCV ECCV 相机位姿估计、视觉定位、SLAM相关论文综述
  18. ffmpeg 为取经而来_清华,那个穿越百年而来的白衣少年
  19. 【线性代数】5-3:克莱姆法则,逆和体积(Cramers Rule,Inverses,and Volumes)
  20. Perl语言中一些内置变量等,$、qw、cmp、eq、ne等

热门文章

  1. python 随机数的代码
  2. 3.26期货每日早盘操作建议
  3. 2022年最新版TMIC新品策划师题库
  4. P02 滴水逆向1月4号公开课
  5. 虚拟机nas服务器,nas虚拟主机(nas为什么要装虚拟机)
  6. 【导航人机交互(HMI)模块功能】
  7. 2023年最新计算机毕业设计项目集合
  8. 软考备考-系统构架师-23-系统架构师考试经验总结
  9. 快鹿集团被罚15亿 黄家骝及韦炎平以集资诈骗罪被判无期
  10. prometheus的irate和rate区别