首先介绍一下Selenium

selenium
是一个用于web自动化测试的工具集,selenium不尽支持所有主流的浏览器,而且还支持很多开发语言,更好的是他这种测试工具其实可以融入到不同的测试框架中,根据你的要求,适应不同的测试流程。其实selenium最核心的就是一个驱动浏览器进行自动化测试的东东。

安装Selenium

pip install Selenium,

建议用pip安装的时候翻墙这样安装的速度会快一些


快速开始

第一个demo

# -*- coding:utf-8 -*-
from selenium import webdriverbrowser = webdriver.Chrome()
browser.get('http://www.baidu.com/')

运行这段代码,程序会打开我的谷歌浏览器,然后访问百度的首页。

第二个demo

# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www.sogou.com")
# 通过XPATH语法找到按钮对应的元素
button = driver.find_element(By.XPATH, '//span//input[@type="submit"]')
# 找到搜索框对应的元素
element = driver.find_element_by_id("query")
# 向搜索框中输入some text
element.send_keys("some text", Keys.ARROW_DOWN)
# 模拟了点击按钮
button.click()
# 打印页面源码
print driver.page_source

运行程序,发现打开了谷歌浏览器,打开了搜狗主页,然后在搜索框中输入了 some text 然后,点击了搜索按钮,打印出了搜索完毕的界面。


Selenium进阶

页面交互
仅仅通过传入URL来抓取页面是不够的,我们想要做的是和页面进行交互,比如在demo2中做到的,搜索框中填写想要搜索的内容,然后自动点击按钮去搜索。比如说,有这么一个元素

<input type="text" name="passwd" id="passwd-id" />

我们可以通过以下三种方式实现,

element = driver.find_element_by_id("passwd-id")
element = driver.find_element_by_name("passwd")
element = driver.find_element_by_xpath("//input[@id='passwd-id']")

第一和第二种是原始的DOM操作,第三种是通过XPATH,这两种方法Selenium是都可以支持的。可能你没接触过XPATH,但是如果你是谷歌用户那你就有福了,谷歌浏览器自带的可以自动生成XPATH语法的功能,这里介绍一下,打开百度主页,打开开发者模式

右键检查百度一下这个按钮,找到元素后,右键然后就和图上的结果一样了

这里粘贴下这个按钮元素的XPATH语法,就是这么简单
//*[@id="su"]
回归正题,在使用XPATH语法找元素的时候,可能会匹配到多个元素,这是就会抛出 NoSuchElementException异常.

获取到元素都我们就可以向文本框中输入一些文本了,

element.send_keys("some text")

还可以通过keys类来模拟点击按钮

element.send_keys(" and some", Keys.ARROW_DOWN)

清除文本框输入的内容可以这样

element.clear()

填写表单

上面介绍了向搜索框中填写内容的方式,接下来就要介绍如何处理表单数据

element = driver.find_element_by_xpath("//select[@name='name']")
all_options = element.find_elements_by_tag_name("option")
for option in all_options:print("Value is: %s" % option.get_attribute("value"))option.click()

首先通过XPATH得到下拉栏这个元素然后遍历下拉栏中的内容,然而这并不是一个最有效的方法,WebDriver给我们提供了一个Select方法:

# -*- coding:utf-8 -*-
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
# 通过索引选择
select.select_by_index(index)
# 通过文字选择
select.select_by_visible_text("text")
# 通过值选择
select.select_by_value(value)

WebDriver提供了一个方法可以全部取消选择

select = Select(driver.find_element_by_id('id'))
select.deselect_all()

可以通过下面代码获取已经选择的选项

select = Select(driver.find_element_by_xpath("xpath"))
all_selected_options = select.all_selected_options

获取可选项

options = select.options

选择完表单后就要提交了

driver.find_element_by_id("submit").click()

元素拖拽

# 元素位置
element = driver.find_element_by_name("source")
# 目标位置
target = driver.find_element_by_name("target")from selenium.webdriver import ActionChains
# 实现一个ActionChains
action_chains = ActionChains(driver)
# 从element拖拽到target
action_chains.drag_and_drop(element, target).perform()

切换窗口

# 在window中切换
driver.switch_to_window("windowName")
# 在frame中切换
driver.switch_to_frame("frameName")

弹出窗口处理

Python爬虫工具之Selenium相关推荐

  1. python爬虫之初恋 selenium

    selenium 是一个web应用测试工具,能够真正的模拟人去操作浏览器. 用她来爬数据比较直观,灵活,和传统的爬虫不同的是, 她真的是打开浏览器,输入表单,点击按钮,模拟登陆,获得数据,样样行.完全 ...

  2. python爬虫作用小工具_【python小课堂|史上最全的Python爬虫工具列表大全】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有python学习者关注Python爬 ...

  3. 简单快捷的 Python 爬虫工具:SmartScraper

    大家好. 今天给大家介绍一款简单.自动且快捷的Python爬虫工具SmartScraper.SmartScraper使页面数据抓取变得容易,不再需要学习诸如pyquery.beautifulsoup等 ...

  4. python金融分析小知识(12)——python爬虫工具xpath使用

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 本篇文章紧接上一篇文章,python金融分析小 ...

  5. Python爬虫4.4 — selenium高级用法教程

    Python爬虫4.4 - selenium高级用法教程 综述 Headless Chrome 设置请求头 设置代理IP 常用启动项参数options设置 Cookie操作 selenium设置coo ...

  6. python爬虫代理和selenium

    python爬虫代理和selenium 1.代理ip的使用 1.1 获取蘑菇代理中的代理ip def get_ip():response=requests.get('http://piping.mog ...

  7. 与python相关的爬虫工具_python小课堂|爬虫工程师必备的10个python爬虫工具!

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

  8. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

  9. Python爬虫利器五Selenium用法

    在上一节我们学习了 PhantomJS 的基本用法,归根结底它是一个没有界面的浏览器,而且运行的是 JavaScript 脚本,然而这就能写爬虫了吗?这又和 Python 有什么关系?说好的 Pyth ...

最新文章

  1. FiM | 牧医所奶业创新团队建立瘤胃微生物脲酶的靶向宏蛋白质组方法
  2. AI神经网络如何辨别事物
  3. dm7和mysql_【干货分享】达梦数据库DM7的新特性发布啦
  4. 样条之连分式插值函数
  5. linux 进程死循环,Linux下如何处理一次用户态进程死循环问题
  6. OpenGL 点光源阴影Point Shadows
  7. 猿课python 第三天
  8. mysql导入的excel更新_excel导入数据库,存在则更新不存在添加
  9. 苹果6发布时间_苹果11月秋季发布会直播时间几点 App Store提前爆大招
  10. python棋盘放麦粒_从零开始学习PYTHON3讲义(五)while循环和棋盘麦粒问题
  11. 基于C语言的基础学习Java
  12. 《IIS6下运行PHP的方法》
  13. Android封装拍照sdk,Android 短视频拍摄、拍照滤镜 第三方库SDK
  14. 第一章:costmap_2d代价地图生成原理
  15. 【Python】安装PIL (Python Imaging Library )
  16. Micro:bit 入门介绍
  17. 也说说“小地方来的”
  18. 使用openssl 转换pkcs12证书为pem格式
  19. Navicat for MySQL(三叶草)破解工具
  20. 关于GA、SNAPSHOT等版本号的意义

热门文章

  1. 安川机器人编程加电弧_安川MOTOMAN焊接机器人编程
  2. 人工智能有多吃香?人工智能岗位薪资水平曝光(附赠37G学习资料大礼包)
  3. 简单实用的PPT框架结构
  4. 阿里云开发板HaaS510报送设备属性
  5. 如何使用glove,fasttext等词库进行word embedding?(原理篇)
  6. windows安全警报怎么关闭_10月23日,鄂州华容进行防空警报鸣放,请不要惊慌!...
  7. linux性能监控工具Netdata安装和卸载教程
  8. http-server使用,启动本地服务器 使用serve包本地启动
  9. mininet简介(一:官网翻译)
  10. GIS空间分析的内容框架