python爬虫 Selenium库学习
一、自动化测试工具,支持多种浏览器,解决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库学习的更多相关文章
- python爬虫---selenium库的用法
python爬虫---selenium库的用法 selenium是一个自动化测试工具,支持Firefox,Chrome等众多浏览器 在爬虫中的应用主要是用来解决JS渲染的问题. 1.使用前需要安装这个 ...
- Python爬虫-- selenium库
selenium库 selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(S ...
- python爬虫解析库学习
一.xpath库使用: 1.基本规则: 2.将文件转为HTML对象: html = etree.parse('./test.html', etree.HTMLParser()) result = et ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍
这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...
- [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)
转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
前面几篇文章介绍了Selenium.PhantomJS的基础知识及安装过程,这篇文章是一篇应用.通过Selenium调用Phantomjs获取CSDN下载资源的信息,最重要的是动态获取资源的评论,它是 ...
- [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒
前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒,同样可以通过Spider获取网站内容,最近学习了Selenium+Phantomjs后,准备利用它们获取百度百科的旅游景点消息盒(I ...
- 安装python的selenium库和驱动
对于使用selenium来进行python爬虫操作可以简化好多操作,它实际上的运行就是通过打开一个浏览器来一步一步的按照你的代码来执行 如果安装过python编译器后应该pip工具也是有的,验证pyt ...
- [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)
转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...
随机推荐
- 今天你花里胡哨了吗 --- 定制属于自己的linux ssh迎宾信息
请开始你的表演 linux-oz6w:~ # cat << 'eof' > /etc/profile.d/ssh-login-info.sh #!/bin/sh # 输出一个图像 e ...
- Java线程池进阶
线程池是日常开发中常用的技术,使用也非常简单,不过想使用好线程池也不是件容易的事,开发者需要不断探索底层的实现原理,才能在不同的场景中选择合适的策略,最大程度发挥线程池的作用以及避免踩坑. 一.线程池 ...
- [旧][Android] ButterKnifeProcessor 工作流程分析
备注 原发表于2016.05.21,资料已过时,仅作备份,谨慎参考 前言 在 [Android] ButterKnife 浅析 中,我们了解了 ButterKnife 的用法,比较简单. 本次文章我们 ...
- RENIX报文字段跳变——网络测试仪实操
什么是报文字段跳变? 报文字段跳变是指字段的值进行一些列有规则的变化,Renix支持对字段进行递增.递减.列表和随机变化. 如当用户想要仿真大量的源IP变化的数据时,就可以使用Modifier进行规则 ...
- Docker遇到的一些问题和感想
Docker 是"不可变"架构. 当你希望改变一个服务的时候(比如更新版本.修改配置.开放端口),不允许直接登录到服务器上改变某个文件,而是应该把这个服务整个删掉,然后替换成新的版 ...
- 【C#IO 操作】字符流(StreamWriter、StreamReader)
StreamWaiter类和StreamReader类的用法 事实上, StreamReader为了性能的考虑, 在自己的内部内置并维护了一个byte buffer. 如果在声明StreamReade ...
- CultureInfo、DateTimeFormatInfo、NumberFormatinfo之间的关系
CultureInfo.DateTimeFormatInfo.NumberFormatinfo之间的关系 线程中CurrentCulture和CurrentUICulture 区别 以下是win10操 ...
- Neo4j入门日志(一)导入数据
本文主要来源于: neo4j的官方文档 使用的是neo4j官方提供的导入方式,即使用import,在cmd中进行导入. 1.导入的基本方式 bin/neo4j-admin import --datab ...
- over the Wall
最近风头很紧,先上两个可用的谷歌镜像给各位应急. https://kfd.me/ http://gufenso.coderschool.cn/ https://github.com/gfw-break ...
- 5.注入内部Bean
我们将定义在 <bean> 元素的 <property> 或 <constructor-arg> 元素内部的 Bean,称为"内部 Bean". ...