一、自动化测试工具,支持多种浏览器,解决JS渲染问题

二、安装

pip3 install Selenium

三、操作介绍(因为是学习别人的课程为了尊重知识产权,部分代码就不显示了)

1驱动浏览器

browser = webdriver.Chrome()

try:   
 browser.get('www.sina.com')#上网

2查找元素

一种方法:

browser.find_element_by_name()
browser.find_element_by_class_name()
browser.find_element_by_id()
browser.find_element_by_xpath()
browser.find_element_by_tag_name()

等等

第二种方法:

browser.find_element(By.NAME,'search')

这里面的find_element相当于BS4里面的find,如果想要用find_all,就要用find_elements

同上有两种方法,我这里就写一种了

browser.find_elements(By.NAME,'search')

3交互操作

input = browser.find_element_by_class_name('search-combobox-input')
input.send_keys('机械键盘')
time.sleep(3)
input.clear()
input.send_keys('iPad')
time.sleep(3)
button = browser.find_element_by_class_name('btn-search')
button.click()

更多操作详见官方文档:

http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

执行动作链:

感觉这用的不多,详见官方文档

http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

4获取属性 

显示属性

input = browser.find_element_by_class_name('search-combobox-input')

print(input.get_attribute('aria-combobox'))

这样返回的是aria-combobox 的属性‘list’

显示文本

browser = webdriver.Chrome()
try:
url = 'https://www.zhihu.com/explore'
browser.get(url)
answers = browser.find_elements_by_class_name('zh-summary')
for answer in answers:
print(answer.text)
finally:
browser.close()

这样就显示了知乎发现里面答案的文本

获取ID、位置、标签名、大小

browser = webdriver.Chrome()
try:
url = 'https://www.zhihu.com/explore'
browser.get(url)
answers = browser.find_elements_by_class_name('zh-summary')
for answer in answers:

print(answer.location)
print(answer.tag_name)
print(answer.size)

finally:
browser.close()

Frame

在某些用到框架的网页里面使用:

browser.switch_to.frame('name')
browser.switch_to.parent_frame('name')

5等待

有的时候网络需要等待Ajax请求加载,所以需要等待网页全部加载出来

隐式等待

当加载网页没有显示我们需要找的元素的时候,会隐式地等待一段时,如果找到元素就直接返回

browser = webdriver.Chrome()

browser.implicitly_wait(10)

url = 'https://www.zhihu.com/explore'
browser.get(url)

显式等待

显式等待是如果特定条件不满足则等待规定的时间

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
wait = WebDriverWait(browser,10)
intput = wait.until(EC.presence_of_element_located((By.ID,'q')))
button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'***')))

显式等待的条件见官方文档:http://selenium-python.readthedocs.io/api.html#selenium.webdriver.support.expected_conditions.element_located_selection_state_to_be

title_is标题是某内容
title_contains标题包含某内容
presence_of_all_elements_located y元素加载出,传入定位元组,如(By.ID,'p')
visibility_of 元素可见,传入定位元组

text_to_be_present_in_element 某个元素文本包含某个文字
text_to_be_present_in_element_value 某个元素值包含某文件
element_to_be_clickable 某元素可点击

等等

6浏览器前进和后退

browser.forward()
browser.back()

7Cookies

可以进行cookies的查看,添加和删除操作

url = 'https://www.zhihu.com/explore'
browser.get(url)
print(browser.get_cookies())
browser.add_cookie({'name':'dai','value':'123'})#一定要记得有value否则会报错
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())

8添加新的选项卡

browser.execute_script('window.open()')
browser.switch_to.window(browser.window_handles[1])
browser.get('https://www.sina.com')

9异常处理

异常处理很多,查看官方文档比较好

python爬虫 Selenium库学习的更多相关文章

  1. python爬虫---selenium库的用法

    python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...

  2. Python爬虫-- selenium库

    selenium库 selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(S ...

  3. python爬虫解析库学习

    一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...

  4. [python爬虫] Selenium常见元素定位方法和操作的学习介绍

    这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...

  5. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  6. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  7. [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论

    前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...

  8. [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...

  9. 安装python的selenium库和驱动

    对于使用selenium来进行python爬虫操作可以简化好多操作,它实际上的运行就是通过打开一个浏览器来一步一步的按照你的代码来执行 如果安装过python编译器后应该pip工具也是有的,验证pyt ...

  10. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

随机推荐

  1. Redis 源码简洁剖析 15 - AOF

    AOF 是什么 AOF 持久化的实现 命令追加 AOF 文件的写入和同步 AOF 文件的载入和数据还原 AOF 重写 为什么需要重写 什么是重写 如何重写 AOF 后台重写 为什么需要后台重写 带来的 ...

  2. Centos7.+系统,二进制包脚本安装Mysql

    #!/bin/bash #配置数据库要安装的目录,可以根据自己的安装路径修改PATHDIRPATHDIR="/project"BASEDIR="$PATHDIR/mysq ...

  3. 树莓派GPIO开发(一):激光头传感器模块的使用

    配置环境 系统:Raspbian11(64位) 设备:树莓派CM4 一.写在前面 主要为了测试我捡漏买的CM4的拓展版 拓展板子没有焊接引脚,但是预留的接口 手动焊接一下 测试成功 ,说明我捡的这块板 ...

  4. 利用终端统计 Xcode代码数量命令

    直接利用终端命令进入工程文件夹然后写下或复制以下命令 find . -name "*.m" -or -name "*.h" -or -name "*. ...

  5. oracle11g在windows下安装

    oracle下载 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html 下载11g ...

  6. 思迈特软件 Smartbi数据查询能力如何?

    随着对BI应用程度的加深,用户需要连接和管理的数据越来越多,也越来越复杂. Smartbi支持丰富的数据源接入,但一般并不能直接使用接入的业务库直接进行数据分析.所以在报表开发前的取数过程,把需要的数 ...

  7. Kubernetes云供应商架构的未来

    首先,我想分享SIG的使命,因为我们用它来指导我们现在和将来的工作.从我们的章程中直接来看,SIG的使命是简化,开发和维护云供应商集成,作为Kubernetes集群的扩展或附加组件.这背后的动机是双重 ...

  8. C++ string 常用函数总结

    头文件:#include<string> [注]:文中关于个数的参数文档中为 size_type 型,更本质是 size_t 型,因为typedef size_t size_type,而 ...

  9. 获取HTML中所有图片的 URL

    /// <summary> /// 获取HTML中所有图片的 URL /// </summary> /// <param name="strHtml" ...

  10. Java中常用的加密方式(附多个工具类)

    一.Java常用加密方式 Base64加密算法(编码方式) MD5加密(消息摘要算法,验证信息完整性) 对称加密算法 非对称加密算法 数字签名算法 数字证书 二.分类按加密算法是否需要key被分为两类 ...