热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫_Selenium详细用法

Selenium自动化测试工具,支持多种浏览器,在爬虫中主要解决JS的渲染问题1.基本使用fromseleniumimportwebdriverfrom

Selenium
自动化测试工具,支持多种浏览器,在爬虫中主要解决JS的渲染问题
1.基本使用

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.support.wait import WebDriverWait

browser = webdriver.chrome() #声明浏览器对象try: browser.get('http://www.baidu.com') #访问页面input=browser.find_element_by_id('kw') #查找元素input.send_keys('Python') #输入Pythoninput.send_key(Keys.ENTER) #输入enterwait=WebDriverWait(browser,10)wait.until(EC.presence_of_element_located(By.ID,'content_left')) #找到对应的元素print(browser.current_url)print(browser.get_COOKIEs())print(browser.page_source)finally:browser.close()

2.查找方式
单个元素:

browser.find_element_by_id('q') == browser.find_element_by_css_selector('#q') == browser.find_element_by_css_xpath('//*[@id='1']')

多个元素:
  browser.find_element(By.ID,'q')

3. 元素交互操作: https://selenium-python-zh.readthedocs.io/en/latest/

input.send_key('ssss')time.sleep(1)input.clearinput.send_key('cccc')button=browser.find_element_by_class_name('tttt')button.click

4. 交互动作,区别于元素操作

from selenium import webdriverfrom selenium.webdriver import ActionChainsbrowser = webdriver.chrome()url = 'www.ddddsdsdsds.com' browser.get(url)browser.switch_to.frame('模块名')source=browser.find_element_by_css_selector('#draggable') #找到两个模块target=browser.find_element_by_css_selector('droppable')actions=ActionChains(browser)actions.drag_and_drop(source,target) #执行操作actions.perform()

5. 执行Javascript

from selenium import webdriverbrowser = webdriver.chrome() browser.get('http://www.baidu.com') browser.execute_script('具体的js的操作') browser.execute_script('可以添加提示')

6. 获取元素信息

from selenium import webdriverfrom selenium.webdriver import ActionChainsbrowser = webdriver.chrome()url = 'www.ddddsdsdsds.com' browser.get(url) logo=browser.find_element_by_id('模块名')print(logo.get-attributes('class')) #获取属性print(logo.text) #获取文本值

7. Frame

browser.switch_to.frame('fram_id') #切换到指定的framebrowser.switch_to.parent_frame() #切换到父frame

9. 前进后退:

browser.back()browser.sleep()browser.forward()print(browser.get_COOKIEs) #获取COOKIEs

10. 选项卡管理

browser.execute_script('windows.open') #新开一个选项卡browser.switch_to_window(browser.windo_handles[1]) #切换到第一个选项卡

8. 异常处理:
有异常问题,直接打印
  例子: except TimeoutException:
      print('Timeout')

转:https://www.cnblogs.com/spencersun/p/9577966.html



推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
author-avatar
阳光映像YGYX
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有