selenium浏览器自动化测试框架

应用场景

  1. 在爬取数据的过程中, 经常遇到动态数据加载, 一般动态数据加载有两种, 一种通过ajax请求加载数据, 另一种通过js代码加载动态数据(js传参和js数据加密).
    selenium可以模拟人操作真实浏览器, 获取加载完成的页面数据
  2. url加密过无法破解规律

简介

selenium是一个web自动化测试用的框架. 程序员可以通过代码实现对浏览器的控制
支持多款浏览器, 如谷歌浏览器, 火狐浏览器等等, 当然也支持无头浏览器.

下载工作

	pip install selenium
谷歌
  1. 查看Chrome 的 版本号
  2. http://chromedriver.storage.googleapis.com/index.html根据 version 的前几位
    下载chromedriver.exe
PhantomJS无界面浏览器
  1. PhantomJS下载及配置环境变量
  2. 下载, 直接解压
  3. 将解压文件的bin目录添加至环境变量

实例化浏览器对象

这里一谷歌为例

from selenium import webdriver
browser= webdriver.Chrome(executable_path='./chromedriver.exe')
browser.get('url')

下面是谷歌无头浏览器

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')   # 无头
chrome_options.add_argument('--disable-gpu')   # 无需渲染
webdriver.Chrome(executable_path='news163/spiders/chromedriver.exe', options=chrome_options)

需要注意的是,在使用多线程爬取数据、Scrapy框架或其他场景,注意不要重复实例化浏览器

爬取数据

发送get请求:

browser.get(‘https://www.baidu.com’)

获取页面元素:
  • find_element_by_id:根据元素的id
  • find_element_by_name:根据元素的name
  • find_element_by_xpath:根据xpath表达式
  • find_element_by_class_name:根据class的值
  • find_element_by_css_selector:根据css选择器
节点交互操作:
  • click(): 点击
  • send_keys(): 输入内容
  • clear(): 清空操作
执行指定的js代码
  • browser.execute_script(js):

JS代码:

 window.scrollTo(0, document.body.scrollHeight)   #   可以模拟鼠标滚动一屏高度
switch_to()方法:
  • driver.switch_to.window(window_name) 切换到制定的window_name页面
  • driver.switch_to.alert() 切换到alert弹窗
  • driver.switch_to.active_element() 定位到当前聚焦的元素上
  • driver.switch_to.default_content() 切换到最上层页面(主文档?)
  • switch_to.frame(‘frameid’) 通过id、name、element(定位的某个元素)、索引来切换到某个frame
  • switch_to.parent_frame()可以切换到上一层的frame
    这是switch_to中独有的方法对于层层嵌套的frame很有用
    扩展
    <iframe>元素会创建包含另外一个文档的内联框架(即行内框架)
获取网页数据
  • browser.page_source
退出浏览器
  • browser.quit()

ps:

在爬取数据时,应灵活使用time.sleep()方法,以数据丢失,且尽量模拟真人操作浏览器

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值