python-Selenium结合浏览器使用及案例

(一)Selenium 简介

Selenium是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同的是 Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括 PhantomJS 这些无界面的浏览器)。

Selenium 可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生。

Selenium 自己不带浏览器,不支持浏览器的功能,它需要与第三方浏览器结合在一起才能使用。但是我们有时候需要让它内嵌在代码中运行,所以我们可以用一个叫 PhantomJS的工具代替真实的浏览器。

可以从 PyPI 网站下载 Selenium 库 http://pypi.python.org/simple/selenium,也可以用第三
方管理器 pip 命令安装:pip install selenium==版本号
如图所示:
在这里插入图片描述

(二)PhantomJS 简介

PhantomJS 是一个基于 Webkit 的“无界面”(headless)浏览器,它会把网站加载到内存并执行页面上JavaScript,因为不会展示图形界面,所以运行起来比完整的浏览器要高效。

如果我们把 Selenium 和 PhantomJS 结合在一起,就可以运行一个非常强大的网络爬虫了,这个爬虫可以处理 JavaScript、cookie、headers,以及任何我们真实用户需要做的事情。

注意:PhantomJS 只能从它的官方网站http://phantomjs.org/download.html)下载。因为PhantomJS 是一个功能完善(虽然无界面)的浏览器而非一个 Python 库,所以它不需要像Python 的其他库一样安装,但我们可以通过 Selenium 调用 PhantomJS 来直接使用。

(三)基础使用方法(结合PhantomJS使用)及百度搜索案例

如果使用其他浏览器,下载一个对应的浏览器驱动并调用该浏览器即可
注意:有些浏览器需要配置以后才可以用,配置教程可以百度,找不到可以私我.下方为大家介绍IE简单使用和PhantomJS使用
Chrome浏览器有些时候并不是很好用,相信大家以后会遇见的哈哈

比如使用IE浏览器,虽然现在IE没那么多人用了,但有些网站用IE还是很方便的,下面先为大家介绍IE的使用

IE浏览器的驱动我准备了两个常见的版本(IEDriverServer_2.48.0和IEDriverServer_3.141.0),大家也可以自行下载
需要注意的是,下载的驱动版本需要跟你安装的Selenium版本一致!!!

大家不用看链接里面的包是32位的,32和64的都可以用,放心下载
百度云IE驱动下载
提取码:98xi

IE的其他配置:
配置ie浏览器:https://www.cnblogs.com/misswjr/p/9453566.html
安装根证书,手动安装:https://inv-veri.chinatax.gov.cn/

# 1. 安装IE浏览器,安装ie的驱动,配置ie浏览器:https://www.cnblogs.com/misswjr/p/9453566.html
# 2. 安装根证书,手动安装:https://inv-veri.chinatax.gov.cn/

# 1. 导入webdriver
from selenium import webdriver

# 2. 调用IE浏览器
driver = webdriver.Ie(executable_path=r'D:\IE_drive\IEDriverServer.exe')

# 将浏览器窗口最大化,因为个人习惯每次都会写上这行代码,因为有些时候浏览器窗口不最大化,找不到一些元素
driver.maximize_window()

# 3. 请求
driver.get(url='要访问的url')
百度搜索案例
# 安装selenium:pip install selenium==3.141

# 步骤:
# 1. 导入webdriver
import time

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 2. 调用浏览器
driver = webdriver.PhantomJS(executable_path=r'D:\phantomjs-2.1.1-windows\bin\phantomjs.exe')

# 3. 访问页面
driver.get(url='https://www.baidu.com/')

# 属性及方法
# 1. title  获取标题
# print(driver.title)  # 百度一下,你就知道

# 2. page_source  查看页面内容
# print(driver.page_source)

# 3. current_url  查看当前请求的URL
# print(driver.current_url)

# 4. get_cookies()   获取页面的所有cookie
# print(driver.get_cookies())

# 5. 查找元素
# 5.1 find_element_by_id('id的值')   根据id查找元素

# id_kw = driver.find_element_by_id('kw')
# print(id_kw)  # <selenium.webdriver.remote.webelement.WebElement (session="87034e40-2ef8-11eb-9fcc-a5e1716ab51d", element=":wdc:1606293064468")>

# 5.2 find_elements_by_class_name('class的值')   根据class获取所有符合class值的元素,返回列表

# class_s_ipt = driver.find_elements_by_class_name('s_ipt')
# print(class_s_ipt)

# 5.3 find_element_by_xpath('xpath路径')  根据xpath查找元素

# input = driver.find_element_by_xpath('//input[@id="kw"]')
# print(input)  # 是一个对象

# 6. text  获取标签之间的内容
# content = driver.find_element_by_xpath('//div[@id="s-top-left"]').text
# print(content)

# 7. get_attribute('属性名')  获取属性值
# class_s_ipt = driver.find_element_by_class_name('s_ipt').get_attribute('id')
# print(class_s_ipt)  # kw

# 8. 截图
# driver.save_screenshot('baidu.png')

# 9. send_keys('输入的内容')
# 步骤:
# 1. 先获取文本框
# 2. 再输入内容
# driver.find_element_by_xpath('//input[@id="kw"]').send_keys('python')
# driver.save_screenshot('input_python.png')

# 10. click()  点击
# 与第九步一样,分两步走
# driver.find_element_by_xpath('//input[@id="kw"]').send_keys('python')
# driver.find_element_by_xpath('//input[@id="su"]').click()
# time.sleep(3)
# 这里让程序沉睡三秒,原因是页面加载需要时间,否则截图太快什么都获取不到
# driver.save_screenshot('click.png')

# 11. 支持快捷键
# 举例:全选和剪切
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('python')
driver.save_screenshot('before_qx.png')
driver.find_element_by_xpath('//input[@id="kw"]').send_keys(Keys.CONTROL,'a')
driver.save_screenshot('qx.png')
driver.find_element_by_xpath('//input[@id="kw"]').send_keys(Keys.CONTROL,'x')
driver.save_screenshot('jq.png')
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值