一、自动化测试工具,支持多种浏览器,解决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. Spring MVC参数绑定(如何接收请求参数及返回参数)

    在SpringMVC interceptor案例实践中遇到了获取jsp表单传递参数失败的问题,怎么的解决的呢?下面详细介绍. 先讲述下https://www.cnblogs.com/ilovebath ...

  2. 重启iptables造成nf_conntrack_max变成65535解决办法

    现象: 查看 sysctl -a |grep nf_conntrack_maxnet.netfilter.nf_conntrack_max = 554288net.nf_conntrack_max = ...

  3. ClickHouse在大数据领域应用实践

    一.序言 面向大数据量查询数据库,优点是在较大数据量(千万级)的前提下具有较好的查询性能. 1.应用场景 ClickHouse应用于OLAP(在线分析处理)领域,具体来说满足如下特点使用此技术比较合适 ...

  4. rinetd基于内网TCP端口转发

    在Linux系统中大多数情况选择用iptables来实现端口转发,iptables虽然强大,但配置不便,而且新手容易出错.在此分享另一个TCP/UDP端口转发工具rinetd,rinetd体积小巧,配 ...

  5. 图的深度遍历(C语言)邻接矩阵表示

    知识讲解: 图的遍历分为两种,深度遍历与广度遍历.这里讨论深度遍历. 以上图为例讨论图(图片来自<算法笔记>)的深度遍历: 设图形的顶点数为n. 先从顶点v0开始,用一个数组vis[n]来 ...

  6. oracle-11G转10G

    先查询directory的地址 导出的文件必须放在此目录select * from dba_directories;找到directory_name的值 ,也可以新建一个create director ...

  7. k8s基础环境配置:基于CentOS7.9

    k8s基础环境配置:基于CentOS7.9 wmware15安装centos7.9:https://www.cnblogs.com/uncleyong/p/15261742.html 1.配置静态ip ...

  8. mysql5.7下载

    官网:https://dev.mysql.com/doc/refman/5.7/en/installing.html 二进制安装:https://dev.mysql.com/doc/refman/5. ...

  9. windows加普通用户加入管理员组

    net localgroup administrators 用户名 /add ------------>使用这句命令添加用户到管理组 shutdown -g 重启电脑

  10. 可视化BI工具选型,应该注意什么

    ​伴随着大数据时代的到来,企业对数据的需求从"IT主导的报表模式"转向"业务主导的自助分析模式",可视化BI工具也随之应运而生.面对如此众多的可视化BI工具,我 ...