版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实现个人微博的爬取目录01任务1使用Ajax实现个人微博的爬取02任务2:使用Selenium实现自动化爬取任务二:使用Selenium实现自动化爬取
任务描述
JavaScript动态渲染的页面不止Ajax这一种。有些网页是由JavaScript生成的,并非原始HTML代码,类似淘宝这种页面,它即使是Ajax获取的数据,但是其Ajax接口含有很多加密参数,我们难以直接找出其规律,也很难直接分析Ajax来抓取。因此,直接模拟浏览器的运行,绕过这个过程,做到在浏览器中看到是什么样,抓取的源码就是什么样,也就是“可见即可爬”,不用再去管网页内部的JavaScript用了什么算法渲染页面,不用管网页后台的Ajax接口到底有哪些参数。
2、能配置selenium自动化环境3、掌握selenium库的基本使用1、会安装对应浏览器驱动任务目标任务二
使用Selenium实现自动化爬取2.1Selenium概述
Selenium
是一个用于Web应用程序自动化测试的工具。它可以直接在浏览器中运行,就像用户在浏览器中操作一样。其支持多种浏览器,包括IE、Firefox、Chrome、Safari等。对于一些JavaScript动态渲染的页面来说,此种抓取方式非常有效。2.2Selenium环境配置
1.配置对应浏览器驱动2.安装Selenium库
pipinstallselenium3.验证安装任务二
使用Selenium实现自动化爬取2.3Selenium基本用法
1.初始化浏览器对象Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等,还有Android、BlackBerry等手机端的浏览器。另外,也支持无界面浏览器PhantomJS。完成了浏览器对象的初始化并将其赋值为browser对象接下来就可以调用browse对象执行各个动作以模拟浏览器操作任务二
使用Selenium实现自动化爬取2.访问页面
可以用get()方法来请求网页,参数传入链接URL即可,下面以访问淘宝为例运行后弹出了Edge浏览器并且自动访问了淘宝,控制台输出淘宝页面的源代码,随后浏览器关闭任务二
使用Selenium实现自动化爬取3.查找节点1)单个节点—find_element通用方法,以淘宝搜索框节点为例
id属性值是q,name属性值也是q可以用多种方式获取它的属性任务二
使用Selenium实现自动化爬取根据id属性获取CSS选择器XPath3个节点都是WebElement类型,是完全一致的任务二
使用Selenium实现自动化爬取
所有获取单个节点的方法任务二
使用Selenium实现自动化爬取2)多个节点—find_elements方法,以淘宝左侧导航条的所有条目为例任务二
使用Selenium实现自动化爬取任务二
使用Selenium实现自动化爬取4.节点交互(以百度搜索栏为例)
常见用法:输入文字时用send_keys方法,清空文字时用clear方法,点击按钮时用click方法任务二
使用Selenium实现自动化爬取任务二
使用Selenium实现自动化爬取5.动作链
一些操作,没有特定执行对象,比如鼠标拖曳、键盘按键等打开网页中的一个拖拽实例声明ActionChains对象调用actions变量的drag_and_drop()方法调用perform()方法执行动作任务二
使用Selenium实现自动化爬取6.运行JavaScript
对于某些操作,SeleniumAPI并没有提供(下拉进度条),直接模拟运行JavaScript,使用execute_script()方法,基本上API没有提供的所有功能都可用执行JS的方式来实现。任务二
使用Selenium实现自动化爬取7.获取节点信息1)获取属性
使用get_attribute()方法获取节点属性,但前提是先选中这个节点传入想要获取的属性名,就可以得到它的值了任务二
使用Selenium实现自动化爬取2)获取文本值
直接调用text属性就可得到节点内部的文本信息,相当于BeautifulSoup的get_text()方法、pyquery的text()方法任务二
使用Selenium实现自动化爬取任务二
使用Selenium实现自动化爬取3)获取ID、位置、标签名、大小id属性可获取节点id,location属性可获取该节点在页面中相对位置,tag_name属性可获取标签名称,size属性可获取节点大小,即宽高任务二
使用Selenium实现自动化爬取8.切换FrameSelenium打开页面后,默认是在父级Frame里面操作,而此时如果页面中还有子Frame,它不能获取到子Frame里面的节点,需要使用switch_to.frame()方法来切换Frame任务二
使用Selenium实现自动化爬取9.延时等待
在Selenium中,get()方法会在网页框架加载结束后结束执行,此时如果获取page_source,可能并不是浏览器完全加载完成的页面,如果某些页面有额外的Ajax请求,我们在网页源代码中也不一定能成功获取到。所以,这里需要延时等待一定时间,确保节点已经加载出来。1)隐式等待
如果Selenium没有在DOM中找到节点,将继续等待,超出设定时间后,则抛出找不到节点的异常,默认的时间是0任务二
使用Selenium实现自动化爬取2)显式等待
隐式等待的效果并没有那么好,因为只规定了一个固定时间,而页面的加载时间会受到网络条件的影响。显式等待方法更合适,它指定要查找的节点,然后指定一个最长等待时间。如果规定时间内加载出了这个节点,就返回查找的节点;如果到了规定时间依然没有加载出该节点,则抛出超时异常。任务二
使用Selenium实现自动化爬取等待条件及其含义任务二
使用Selenium实现自动化爬取10.前进和后退
浏览器都有前进和后退功能,Selenium也可完成这个操作,使用back()方法后退,使用for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沙尘暴应急培训
- 冠状动脉支架后并发冠状动脉血栓栓塞护理查房
- 酮加氢合成醇项目可行性研究报告模板立项申批备案
- 无备案消毒产品市场清查
- 教育培训行业准入与退出制度
- 稀土交易合同协议范本
- 护理沟通中的沟通游戏设计
- 2026年及未来5年市场数据中国河南省内河港口行业竞争格局分析及投资战略咨询报告
- 护理管理中的跨文化沟通与护理
- 儿内外科阑尾炎专项考核试题
- 新高考教学教研联盟(长郡二十校)2026届高三年级4月第二次联考英语试卷(含答案详解)
- 基于组态王停车场智能监控方案介绍
- 卸料平台监理实施细则
- 2026年广东省梅州市大埔县八年级生物第二学期期末教学质量检测试题含解析
- 2026年中考物理冲刺押题试卷及答案(共六套)
- 四川省纪委遴选笔试试题及答案
- 电力电子技术培训
- 电线电缆追溯制度规范
- 2025初二微机考试试题及答案
- 电信传输通信考试题库及答案
- 化学学科介绍
评论
0/150
提交评论