keys

selenium解析

帅比萌擦擦* 提交于 2020-01-08 19:38:04
目录 一 介绍 二 安装 1、有界面浏览器 selenium+chromedriver 2、无界面浏览器 selenium+phantomjs selenium+谷歌浏览器headless模式 三 基本使用 四 选择器 一 基本用法 二 xpath 详解 三 获取标签属性 五 等待元素被加载 隐式等待 显式等待 六 元素交互操作 点击,清空 Action Chains 在交互动作比较难实现的时候可以自己写JS(万能方法) 补充:frame的切换 七 其他 模拟浏览器的前进后退 cookies 选项卡管理 异常处理 八 项目练习 自动登录163邮箱并发送邮件 爬取京东商城商品信息 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器 from selenium import webdriver browser=webdriver.Chrome() browser=webdriver.Firefox() browser=webdriver.PhantomJS() browser=webdriver.Safari() browser=webdriver.Edge() 官网

Python爬虫利器Selenium的用法

半世苍凉 提交于 2020-01-08 06:45:59
转自https://www.cnblogs.com/BigFishFly/p/6380024.html 前言 在上一节我们学习了 PhantomJS 的基本用法,归根结底它是一个没有界面的浏览器,而且运行的是 JavaScript 脚本,然而这就能写爬虫了吗?这又和Python有什么关系?说好的Python爬虫呢?库都学完了你给我看这个?客官别急,接下来我们介绍的这个工具,统统解决掉你的疑惑。 简介 Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。话说回来,PhantomJS不也是一个浏览器吗,那么 Selenium 支持不?答案是肯定的,这样二者便可以实现无缝对接了。 然后又有什么好消息呢?Selenium支持多种语言开发,比如 Java,C,Ruby等等,有 Python 吗?那是必须的!哦这可真是天大的好消息啊。 嗯,所以呢?安装一下 Python 的 Selenium 库,再安装好 PhantomJS,不就可以实现 Python+Selenium+PhantomJS 的无缝对接了嘛!PhantomJS 用来渲染解析JS,Selenium

Python之Selenium的爬虫用法

为君一笑 提交于 2020-01-08 04:37:25
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。 更多详情可以查看 Webdriver 的简介。 Webdriver 本文参考内容来自 Selenium官网 SeleniumPython文档 首先安装 Selenium 1 pip install selenium 或者下载源码 下载源码 然后解压后运行下面的命令进行安装 1 python setup . py install 安装好了之后我们便开始探索抓取方法了。 快速开始 初步体验 我们先来一个小例子感受一下 Selenium,这里我们用 Chrome 浏览器来测试,方便查看效果,到真正爬取的时候换回 PhantomJS 即可。 1 2 3 4 from selenium import webdriver browser = webdriver . Chrome ( ) browser . get ( 'http://www.baidu.com/' ) 运行这段代码,会自动打开浏览器

redis命令

妖精的绣舞 提交于 2020-01-06 21:39:00
进去客户端:redis-cli 密码: auth xxx 查看所有key:keys* 查看以xxx为前缀的key:keys xxx* 查看key的内容: get xxx 查看redis总的数据量:dbsize 清空所有的key:flushall 来源: CSDN 作者: TDScsdn 链接: https://blog.csdn.net/tandengshanEpaylinks/article/details/103857972

Java图形界面编程

二次信任 提交于 2020-01-05 13:26:37
package 图形用户界面1; import java.awt.*; //import java.awt.event.ActionEvent; //import java.awt.event.WindowEvent; //import java.awt.event.WindowListener; //import java.awt.Button; //import java.awt.Color; //import java.awt.FlowLayout; //import java.awt.Frame; //import java.awt.Label; //import java.awt.TextField; import java.awt.event.*; public class mm { public static void main (String arg[]) { Frame f1=new Frame("我的信息"); f1.setSize(300,200); f1.setLocation(300, 240); f1.setBackground(Color.pink); f1.setLayout(new FlowLayout()); f1.add(new Label("姓名")); f1.add(new TextField("朱月云",25)); f1.add(new

Redis 集群 lua 实现

▼魔方 西西 提交于 2020-01-05 00:27:44
二话不说,直接上货.多多交流哈,谢谢各路大神. . 重点就是下面这段: Object object = redisTemplate.execute(redisUpdateOrderScript, //这里有key 要像官网说的那样加个"{}",不然就报错了,这里3个key都要前缀一致 Arrays.asList(hkey, amountKey, key), //值无要求 amount.longValueExact(),price.doubleValue(),price.doubleValue()); 我自己的理解是,执行脚本和执行hget 是一样的,只是lua脚本内容由Redis执行,但发送命令的要求是一样的.所以上面3个key 都得加一样的前缀. . . . 业务逻辑是这样子的: 把20档盘口放到Redis里面 1.用有序集合(sorted set)进行自动价格排序 ZADD key 0.0354 "0.0354" 2.然后再根据价格到hash里去取值,取的val 就是这个价格的下单量 HGET key 0.0354 java 代码 加盘口 public void addOrderForLua(BeforeMatchDTO model) { //缓存失效 redisService.remove(RedisService.getPositionKey(model

瀑布流图片加载

人盡茶涼 提交于 2020-01-04 11:20:06
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .imglist{width: 100%;height: auto;position: relative;} .imglist ul{padding:0px;margin:0px auto;position: relative;} .imglist ul li{width: 220px;border:1px solid #ccc;padding: 5px;float: left;list-style: none;position: absolute;} .imglist ul li img{width: 100%;vertical-align: middle;} .more{position: absolute;display: block;width: 100px;height:30px;padding: 5px 10px;background-color: #efefef;color:#333;left: 0px;right:0px;margin: 0px auto;border:none;border-radius: 4px;} </style> </head> <body> <div class="imglist">

【写给朱大虫的教程】【Ruby on Rails】【006】遵循Rails理念的快速实现

耗尽温柔 提交于 2020-01-04 03:49:59
前言: 上两节我们讲了用户的添加、登录……,这一次我们遵循Rails的理念,快速实现用户的注册、登录…… 理念: 1、少就是多 2、不要重复制造轮子 开始: 1、新建rails工程 $ rails new r2 -d=mysql 配置Gemfile文件,添加一句: gem 'devise' #devise是一个gem包 配置config/database.yml文件,修改适合自己的数据库名、用户名和密码。 $ bundle install $ rake db:create #创建数据库 解释: devise是一个开源的工程,主要用于用户的注册、登录、找回密码、session等等。所谓“不要重复制造轮子”,既然有好的工程,我们就拿来用,直接在Gemfile中作为gem包引入,方便之极。Do you want to know more? https://github.com/plataformatec/devise 2、配置devise (1)应用devise: $ rails g devise:install 输出如下: =============================================================================== Some setup you must do manually if you haven't yet: 1

CentOS6.6中saltstack的安装配置与使用

↘锁芯ラ 提交于 2020-01-04 01:10:15
文章目录 1 saltstack简介 2 环境 3 配置hosts 4 安装 4.1 安装salt-master 4.2 安装salt-minion 5 配置与启动 5.1 配置salt-master 5.2 启动salt-master 5.3 配置salt-minion 5.4 启动salt-minion 6 使用 6.1 显示所有minion认证信息 6.2 添加认证信息 7 命令 7.1 简单命令 7.1.1 主机是否通(test.ping) 7.1.2 执行命令(cmd.run) 7.2 其它命令 8 参考文档 技术交流 1 saltstack简介 SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。 通过部署SaltStack,我们可以在成千万台服务器上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。 2 环境 主机名 IP 安装软件 salt-master1 172.16.159.143 salt-master salt

driver.find_element_by_xpath.clear()无法清空输入框默认值

无人久伴 提交于 2020-01-02 18:19:32
输入框带默认值,想删除默认值,填写新内容,使用clear()再send_keys(), 发现这种方式无法清除,只会在默认值后面追加新的内容。 上网搜了一下,有两种解决方案,如下: 方法一 : 先双击,后直接send_keys(), 不用clear() 缺陷: 双击不一定能选中所有内容 ele = driver.find_element_by_xpath('xxx') ActionChains(driver).double_click(ele).perform() ele.send_keys('abc') 方法二 : 通过键盘操作全选,然后直接send_keys(), 不用clear() ele = driver.find_element_by_xpath('xxx') ele.send_keys(Keys.CONTROL, 'a') ele.send_keys('abc') 来源: https://www.cnblogs.com/jjstrip/p/11990447.html