selenium的基本用法
selenium需要配合一个driver 我使用的是chrome的driver 注意一定要下载对应浏览器版本的driver 否则会报错的
http://chromedriver.storage.googleapis.com/index.html
例如我的chrome的版本是67.xxx我选择的是2.38 最开始下载的2.39和我的版本不匹配,如果你也是这样,请多换几个版本
1.导入包
from selenium import webdriver
from scrapy.selector import Selector #这是调用选择器
建立一个brower path后面跟你的driver的地址,可以是绝对路径,要英文路径,我没试过中文的,经验告诉我,用英文
browser = webdriver.Chrome(executable_path='./chromedriver')
2.打开一个网页
browser.get("https://www.zhihu.com/signin")
print(browser.page_source) #获取页面的html文本配合selector使用
3模拟登录知乎
from selenium import webdriver
from scrapy.selector import Selector
import time
browser = webdriver.Chrome(executable_path='./chromedriver') browser.get("https://www.zhihu.com/signin") browser.find_element_by_css_selector(".SignFlow-accountInput.Input-wrapper input[name='username']").send_keys("你的用户名")
browser.find_element_by_css_selector(".Input-wrapper input[name='password']").send_keys('你的密码')
time.sleep(5) #也许会出现验证码,得手动打码,或者你调用打码的api这边自己调 browser.find_element_by_css_selector(".SignFlow-submitButton").click() #模拟点击登录按钮
4模拟登录微博
from selenium import webdriver
from scrapy.selector import Selector
import time
browser = webdriver.Chrome(executable_path='./chromedriver')
browser.get("https://weibo.com/") time.sleep(5)
browser.find_element_by_css_selector("#loginname").send_keys("你的用户名")
browser.find_element_by_css_selector(".info_list.password input[name='password']").send_keys('你的密码')
browser.find_element_by_css_selector(".W_btn_a.btn_32px[node-type='submitBtn']").click() #模拟点击登录
5修改selenium的默认配置不加载图片
from selenium import webdriver
chrome_opt = webdriver.ChromeOptions()
prefs={"profile.managed_default_content_settings.images":2}
chrome_opt.add_experimental_option("prefs",prefs)
browser = webdriver.Chrome(executable_path='./chromedriver',chrome_options=chrome_opt)
browser.get("https://www.taobao.com")
6模拟下拉页面加载内容
from selenium import webdriver
browser = webdriver.Chrome(executable_path='./chromedriver')
browser.get("https://www.oschina.net/blog")
for i in range(3):
browser.execute_script("window.scrollTo(0,document.body.scrollHeight);var lenOfPage=document.body.srollHeight; return lenOfPage;")
time.sleep(3)
selenium的基本用法的更多相关文章
- python爬虫---selenium库的用法
python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...
- Python之Selenium的爬虫用法
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手).也就是说 Sel ...
- 模拟登陆百度以及Selenium 的基本用法
模拟登陆百度,需要依赖于selenium 模块,调用浏览器,执行python命令 先来说一下这个selenium模块啦...... 本文参考内容来自 Selenium官网 SeleniumPython ...
- Selenium WebDriver高级用法
Selenium GitHub地址 选择合适的WebDrvier WebDriver是一个接口,它有几种实现,分别是HtmlUnitDrvier.FirefoxDriver.InternetExplo ...
- PYTHON 爬虫笔记七:Selenium库基础用法
知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...
- selenium模块基础用法详解
目录 selenium模块 官方文档 介绍 安装 有界面浏览器 无界浏览器 selenium+谷歌浏览器headless模式 基本使用 选择器 基本用法 xpath 获取标签属性 等待元素被加载 隐式 ...
- <自动化测试>之<Selenium API 的用法1>
今天,简单,举例说一下在用python+selenium中元素定位的主要方法,第一部分是单个元素的操作,第二部分是一类元素的操作,实际操作中注意区分 #!/usr/bin/env python # - ...
- selenium By.xpath 用法
搞了一下午... 1. Xpath往往以“//”开头,属性都是采用@表示,例如//div[@id='_navigation']/div 2. Firefox有个插件叫做xpather, ...
- Selenium常用API用法示例集----下拉框、文本域及富文本框、弹窗、JS、frame、文件上传和下载
元素识别方法.一组元素定位.鼠标操作.多窗口处理.下拉框.文本域及富文本框.弹窗.JS.frame.文件上传和下载 元素识别方法: driver.find_element_by_id() driver ...
随机推荐
- Spring boot集成spring-boot-starter-data-jpa环境搭建
1.创建Spring boot项目 2.保存等待构建完成 3.增加spring-boot-starter-data-jpa.内存数据库依赖包hsqldb <!-- 添加data jpa依赖 -- ...
- ES搜索结果调优
访问我的博客 自从使用 ElasticSearch 重构了主站的搜索项目之后,之后又陆续接入了其他两个项目,目前使用 SpringBoot 方式跑了一个伪集群,主站使用的时候,比较稳定,没有人反馈说有 ...
- 利用redis实现分布式锁
分布式锁一般有三种实现方式: 1. 数据库乐观锁: 2. 基于ZooKeeper的分布式锁: 3. 基于Redis的分布式锁: 这里大概说一下三种方式的优缺点,数据库乐观锁优点是实现简单,只需要for ...
- C 程序与 C++ 程序之间的相互调用
因为 C 编译器编译函数时不带参数的类型信息,只包含函数的符号名字.如 void foo( int x ) , C 编译器会将此函数编译成类似 _foo 的符号,C 链接器只要找到了调用函数的符号,就 ...
- 如何扩展VS2017未安装的功能
扩展VS2017未安装的功能 我们在使用VS2017时,由于VS2017该ide功能过于强大,使用范围涵盖多个领域,我们在安装VS2017时很多时候只需要安装自己需要的某部分的功能即可,这个步骤在软件 ...
- C#比较两个对象是否为同一个对象。
两个对象是否为同一个对象:是看两个对象是否指向堆中的同一块内存. 1.使用object.ReferenceEquals() class Program { static void Main(strin ...
- c# 接口的协变和逆变
如果派生类只是用于输出值,那么这种结构化的委托有效性之间的常数关系叫做协变 就是创建一个派生类委托对象 让派生类赋值给基类对象 协变关键字out 对期望传入基类时允许传入派生对象的特性叫逆变 逆变关 ...
- [PHP] 2018年终总结
去掉敏感信息后的不完整版 ==========================================================================2018年12月29日 记 ...
- C-switch case之如何巧妙判断范围区域
当判断整数时 示例: 判断整数范围 #include <stdio.h> int main() { unsigned ]={0x00,0x07,0x11,0x60,0x61,0x66}; ...
- spring_04bean的生命周期
一.前言 spring框架中的bean对象生命周期是面试时常考的问题 往往笔试,面试总喜欢问生命周期的问题 二.spring_bean应用上下文生命周期图: 三.生命周期流程(bean应用上下文): ...