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

python爬虫可视化界面_python爬虫之selenium可视化爬虫介绍

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理以下文章来源于腾讯云作者:诡途(想要学习Pytho

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

以下文章来源于腾讯云 作者:诡途

( 想要学习Python?Python学习交流群:1039649593,满足你的需求,资料都已经上传群文件流,可以自行下载!还有海量最新2020python学习资料。 )

之所以把selenium爬虫称之为可视化爬虫

主要是相较于前面所提到的几种网页解析的爬虫方式

selenium爬虫主要是模拟人的点击操作

selenium驱动浏览器并进行操作的过程是可以观察到的

就类似于你在看着别人在帮你操纵你的电脑,类似于别人远程使用你的电脑

当然了,selenium也有无界面模式

快速入门

selenium基本介绍:

selenium 是一套完整的web应用程序测试系统,

包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)

和测试的并行处理(Selenium Grid)。

Selenium的核心Selenium Core基于JsUnit,

完全由Javascript编写,因此可以用于任何支持Javascript的浏览器上。

selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,

爬虫中主要用来解决Javascript渲染问题。

用python写爬虫的时候,主要用的是selenium的Webdriver,

#安装selenium库

pip install selenium#安装对应浏览器驱动#我们可以通过下面的方式先看看Selenium.Webdriver支持哪些浏览器

from selenium importwebdriverprint(help(webdriver))

适用浏览器:

PACKAGE CONTENTS

android (package) blackberry (package) chrome (package)

common (package) edge (package) firefox (package)

ie (package) opera (package) phantomjs (package)

remote (package) safari (package) support (package) webkitgtk (package)#这里要说一下比较重要的PhantomJS,#PhantomJS是一个而基于WebKit的服务端Javascript API,#支持Web而不需要浏览器支持,#其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。#PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试

简单测试

from selenium importwebdriver##声明浏览器对象

browser1 =webdriver.Chrome()

browser2=webdriver.Firefox()##访问页面

browser1.get("http://www.baidu.com")print(browser1.page_source)#关闭当前窗口

browser1.close()

元素定位

要想对页面进行操作,首先要做的是选中页面元素,

比较常见的八种元素定位方式,如下表

页面操作

1.表单填充

#找到用户名输入用户名

user = drive.find_element_by_name("LoginForm[username]")

user.send_keys(username)#找到密码输入密码

pwd=drive.find_element_by_id("LoginForm_password")

pwd.send_keys(password)#点击登录按钮实现登录

drive.find_element_by_class_name("login_btn").click()

2.窗口句柄

简单讲,句柄就是浏览器上方每一个窗口栏的唯一标识

#获取当前窗口所有句柄

handles =drive.window_handles#通过句柄 切换到第2个标签页

drive.switch_to.window(handles[2])"""操作完成"""

#关闭当前窗口

driver.close()#通过句柄 切换到第1个标签页

drive.switch_to.window(handles[0])

time.sleep(random.uniform(2,3))

3.url加载和获取

#url加载

drive.get(url)#获取当前页面url并断言

currentPageUrl = driver.current_url

4.COOKIE处理

get_COOKIEs:获取COOKIE信息

add_COOKIE:添加COOKIE信息

drive.get("http://www.baidu.com")

COOKIE= {'name':'foo','value':'bar'}

drive.add_COOKIE(COOKIE)

drive.get_COOKIEs()

等待方式

现在很多网站采用 Ajax技术

无法确定网页元素什么时候能被完全加载

所以网页元素的选取比较困难

此时就需要设置等待(等待网页加载完成)

selenium有两种等待方式:

显式等待

隐式等待

1.显式等待

显式等待是一种条件触发式等待

直到设置的某一条件达成时才会继续执行

可以设置超时时间,如果超过超时时间元素依然没被加载,就会抛出异常

from selenium importwebdriverfrom selenium.webdriver.support.wait importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as EC

drive=webdriver.Chrome()

url= 'http://www.baidu.com/'drive.get(url)try:

WebDriverWait(self.driver,10).until(EC.presence_of_element_located(By.ID,"LoginForm[username]")) #显示等待

except:print('%s页面未找到元素'% loc)

以上代码加载 'http://www.baidu.com/'页面

并定位id为"LoginForm[username]"的元素

设置超时时间10秒,webDriverWait默认会500ms检测一下元素是否存在

selenium提供了一些内置的用于显示等待的方法,

位于expected_conditions类中,详细见下表

2.隐式等待

隐式等待是在尝试定位某个元素时,如果没能立刻发现,就等待固定时长

类似于socket超时,默认设置是0秒,即相当于最长等待时长

在浏览器界面直观感受是:

等待直到网页加载完成(地址栏这个地方不是× 变成如下)时继续执行,

网页加载超过设置等待时长才报错

使用方法

from selenium importwebdriver

drive=webdriver.Chrome()

url= 'http://www.baidu.com/'

#设置最大等待时长 10秒

drive.implicitly_wait(10)

drive.get(url)

user= drive.find_element_by_name("LoginForm[username]")

3.线程休眠

time.sleep(time)是比较常用的线程休眠方式

为了避免风险,我个人比较喜欢随机休眠

time.sleep(random.uniform(4,5))

扩展程序加载

#设置好应用扩展

chrome_options.add_extension(extension_path)#添加下载路径#download.default_directory:设置下载路径 profile.default_content_settings.popups:设置为 0 禁止弹出窗口

prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path}

chrome_options.add_experimental_option('prefs', prefs)



推荐阅读
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
author-avatar
哒Dayling玲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有