python数据分析与可视化是什么,基于python的数据挖掘与可视化分析
在文章的前一部分,我们回顾了快速启动元素定位页面操作等待模式扩展程序加载。
回顾
本文将带你通过Python爬虫(1)介绍——的基本原理
本文将带您了解Python crawler (2)对四种常见的基本爬虫方法的介绍。
selenium爬虫之所以叫视觉爬虫
主要是和前面提到的几种网页分析的爬虫方式进行比较。
Selenium爬虫主要模拟人类的点击操作。
可以观察到selenium驱动浏览器和操作浏览器的过程。
类似于看别人帮你操纵电脑,类似于别人远程使用你的电脑。
当然,selenium也有接口模式。
快速入门selenium基本介绍:
Selenium是一个完整的web应用程序测试系统,
包括测试的记录(selenium IDE)、编写和运行(selenium远程控制)。
和测试(硒网格)。
Selenium Core基于JsUnit,
它完全是用JavaScript编写的,所以可以在任何支持JavaScript的浏览器中使用。
Selenium可以模拟真实的浏览器,自动化测试工具,支持多种浏览器。
爬虫主要用于解决JavaScript渲染问题。
用python写爬虫的时候,我们主要用selenium的Webdriver,
#安装selenium库pip安装selenium#安装相应的浏览器驱动#我们可以先看看selenium支持哪些浏览器。Webdriver从Selenium导入WebDriver Print (help (webdriver))的方法如下。适用浏览器:包内容Android(包)BlackBerry(包)Chrome(包)Common(包)Edge(包)Firefox(包)IE(包)Opera(包)PhantomJS(包)Remote(包)Safari(包)Support(包)WebKit GTK(包)#这里我要说的是比较重要的Phantom JS,#PhantomJS是服务器端的JavaScript API,#基于WebKit,#它支持Web,但不支持浏览器。#它速度很快,原生支持各种Web标准:Dom处理、CSS选择器、JSON等等。#PhantomJS可用于驱动Google Chrome的下载地址,用于页面自动化、网络监控、网页截屏和无界面测试。
注意对应的版本号,在chrome地址栏输入Chrome://version/即可查看自己的Chrome版本。
我用的是蟒蛇。下载后,只需把它扔进anaconda3\Scripts文件夹。
如果是pycharm、VScode等其他ide还是可以这样做的,但是是anaconda的集成python。
简单测试
从selenium导入webdriver# #声明浏览器对象browser 1=web driver . chrome()browser 2=web driver . Firefox()# #访问页面browser 1 . get( 3358 www . Baidu . com )Print(browser 1 . page _ source)#关闭当前窗口browser1.close()元素定位对页面进行操作,首先要做的是选择页面元素,
下表显示了八种常见的元素定位方法。
定位一个元素定位多个元素定位描述Find _ element _ by _ id Find _ elements _ by _ ID按元素ID定位Find _ element _ by _ name Find _ elements _ by _ XPath Find _ element S _ by _ XPath Find _ element _ by _ link _ text Find _ elements _ by _ link _ text Find _ elements _ by _ link _ text Find _ element _ by _ partial _ link _ text Find _ Elements _ by _ partial _ link _ t Locate by ext hyperlink text Find _ element _ by _ tag _ name Find _ Elements _ by _ tag _ name Locate by tag name Find _ element _ by _ class _ name Find _ Elements _ by _ class _ name Locate by class name Find _ element _ b Y _ css _ Selector Find _ Elements _ by _ CSS _ Selector由CSS选择器定位。 更详细的定位方法请参考:《史上最全!Selenium元素定位的30种方式》。
第一页。表格填写
#找到用户名并输入用户名user=drive . Find _ element _ by _ name(登录[用户名]) user.send _ keys(用户名)#找到密码并输入密码pwd=drive.find _ element _ by _ id(登录_密码)pwd.send _ keys(密码)#点击登录按钮登录drive . Find _ element _ by _ class _ name(登录_ BTN )。单击()2。窗户把手
简单来说,句柄就是浏览器顶部每个窗口栏的唯一标识。
#获取当前窗口的所有句柄handles=drive.window_handles#切换到第二个选项卡drive . Switch _ to . window(handles[2]) 操作完成 #关闭当前窗口driver.close() #切换到第一个选项卡页面drive . Switch _ to . window(handles[0])time . sleep(random . uniform(2,3)) 3 .URL加载和获取
# urlload drive.get(url)#获取当前页面的url并断言current pageurl=driver . current _ URL 4。饼干加工
Get_cookies:获取cookie信息add_cookie:添加cookie信息drive . get( 3358 www . Baidu . com )cookie={ name : foo , value : bar } drive . add _ cookie(cookie)drive . get _ cookie()现在等待模式
无法确定网页元素何时可以完全加载。
因此,网页元素的选择是困难的。
此时,您需要设置wait(等待网页加载)。
Selenium有两种等待方式:
显式等待隐式等待1.显式等待
显式等待是一种条件触发等待。
在满足设定的条件之前,执行不会继续。
您可以设置超时时间。如果元素在超时后没有被加载,将会抛出一个异常。
从selenium导入webdriver从selenium.webdriver.support . wait导入web driver wait从selenium . web driver . support导入expected_conditions作为EC drive=webdriver。chrome()URL= http://www . Baidu . com/ drive . get(URL)try:web driver wait(self . driver,10)。直到(EC . presence _ of _ element _ located(By。ID,LoginForm [username]) #显示页面 http://www.baidu.com/等待上面的代码除了:print(%s page找不到元素 % loc )。
并找到id为“LoginForm[用户名]”的元素
将超时时间设置为10秒,默认情况下,webDriverWait会在500ms内检查该元素是否存在。
Selenium提供了一些显示等待的内置方法,
位于expected_conditions类中,详细信息请参见下表。
内置方法函数title_is确定当前页面的标题是否等于预期内容title_contains确定当前页面的标题是否包含预期字符串presence_of_element_located确定是否向dom树中添加元素,
这并不意味着元素必须是可见的。presence _ of _ all _ element _ located确定dom树中是否存在至少一个元素。visibility_of_element_located确定元素是否可见。visibility_of确定一个元素是否可见。invisibility _ of _ element _ located确定一个元素在dom树中是不存在还是不可见。text_to_be_present_in_element确定元素中的文本是否包含预期的字符串。text _ to _ be _ present _ in _ element _ value确定元素中的value属性是否包含预期的字符frame _ to _ be _ available _ and _ switch _ to _它确定帧是否可以接入。如果
返回True和switch in,否则返回Falseelement_to_be_clickable来确定一个元素是否可见,是否是enable的staleness _ of。等待从dom树中移除元素。element_to_be_selected判断一个元素是否被选中,一般用于下拉列表element_located_to_be_selected判断一个元素是否被选中,一般用于下拉列表element_selection_state_to_be判断一个元素的选中状态是否符合预期。alert_is_present判断页面上是否存在提示框2.隐式等待0。
隐式等待是当试图定位一个元素时,如果不能立即找到它,就等待一个固定的时间。
类似于套接字超时,默认设置是0秒,相当于最大等待时间。
在浏览器界面中的直观感受是:
继续执行直到网页加载完毕(地址栏这个地方不是如下),
在报告错误之前,网页加载超过了设定的等待时间。
施用方式
从Selenium导入web driver Drive=web driver . chrome()URL= 3358 www.baidu.com/#设置最大等待时间10秒Drive . implicit _ 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 _ options( prefs ,prefs)在最后一个拉票环节写入。
最近,我参加了CSDN组织的“极客”原创博客大赛。
经过重重筛选,终于上了50强榜单。
原创不容易。帮我投一张免费票。
支持:点击投票。
谢谢大家!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。