《数据采集技术》课件-项目3:动态网页爬取(Selenium)_第1页
《数据采集技术》课件-项目3:动态网页爬取(Selenium)_第2页
《数据采集技术》课件-项目3:动态网页爬取(Selenium)_第3页
《数据采集技术》课件-项目3:动态网页爬取(Selenium)_第4页
《数据采集技术》课件-项目3:动态网页爬取(Selenium)_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安装Selenium——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

Selenium工具010203知识点浏览器驱动程序安装SeleniumSelenium工具01

Selenium工具Selenium本身是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的遥控手柄,可以按指定的命令自动操作。如果作为爬虫框架,Selenium就可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面提交。Selenium支持的众多浏览器包括Edge浏览器,火狐浏览器,Safari,谷歌浏览器等。浏览器驱动程序02

浏览器驱动程序浏览器驱动程序是Selenium与浏览器之间的桥梁,不同浏览器需要对应的驱动程序。常见的驱动包括ChromeDriver(适用于Chrome浏览器)、GeckoDriver(适用于Firefox浏览器)和EdgeDriver(适用于Edge浏览器)。安装Selenium03

安装SeleniumSelenium是一个Python中的第三方库,安装的时候可以采用pip或者Pycharm中的Packages的easy-install安装。自动操作浏览器

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

Selenium与浏览器的交互010203知识点自动化访问页面自动化操作页面04页面等待机制Selenium与浏览器交互01

Selenium与浏览器交互当运行Selenium脚本时,浏览器驱动程序就像一个小型服务器在后台运行。Python脚本通过发送HTTP请求告诉这个“服务器”要做什么操作,比如“请点击这个按钮”或“请在输入框里输入文字”。驱动程序收到这些请求后,就会去控制真正的浏览器执行相应的动作,然后把结果通过HTTP响应返回给脚本。整个过程就像是脚本在给驱动程序发命令,驱动程序负责翻译这些命令并控制浏览器执行,最后把执行结果报告回来。自动化访问页面02

自动化访问页面要让Selenium驱动浏览器访问一个特定的网页,首先需要创建一个WebDriver实例,然后使用get方法指定URL地址。以下是一个示例代码片段,用于打开指定网站。fromseleniumimportwebdriver#创建Edge浏览器实例driver=webdriver.Edge()#定义字符串变量存储URLurl="/szjc/AM/Index.html#将此替换为其他目标网址#使用get方法访问页面driver.get(url)自动化操作页面03

自动化操作页面为了让浏览器窗口以全屏模式显示,可以调用maximize_window()方法。这通常是在打开新页面后立即执行的操作,以确保用户界面元素完全可见。以下是如何实现窗口最大化的代码示例。#在创建浏览器实例后,紧接着最大化窗口driver.maximize_window()

自动化操作页面在多页面环境中,可能需要导航到不同的URL,或是在同一站点内前后翻页。Selenium提供了几个方法来模拟用户的浏览行为,比如前进、后退以及刷新页面。这些方法分别是forward()、back()和refresh()。#加载新页面driver.get('')#返回上一页driver.back()#前进到下一页driver.forward()#模拟刷新当前页面driver.refresh()页面等待机制04

页面等待机制在实际的自动化测试中,网页元素的加载往往需要时间,特别是在网络较慢或页面内容较多的情况下。如果脚本运行得太快,可能会在元素还没完全加载时就尝试操作,导致找不到元素的错误。因此,Selenium提供了多种等待机制来确保操作的稳定性。#强制等待#强制等待3秒time.sleep(3)#隐式等待#设置隐式等待时间为10秒#在查找元素时,如果元素没有立即出现,WebDriver会等待最多10秒driver.implicity_wait(10)

页面等待机制此外还有显示等待的方式。合理使用等待机制可以大大提高自动化脚本的稳定性和可靠性,避免因为网页加载延迟而导致的测试失败。#等待特定元素出现,最多等待10秒

wait=WebDriverWait(driver,10)使用Selenium查找HTML元素——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

定位元素010203知识点通过id属性查找元素通过class属性查找元素04通过定制方式查找元素

定位元素01

定位元素定位元素使用的函数名有find_element和find_elements。如果使用单数形式的find_element,则只会返回第一个匹配的节点;如果需要查找多个节点,则应使用find_elements。在获取相关内容时,以find_element为例,可以结合By指定不同的定位方式,也可以使用CSS选择器、XPath等策略找到特定元素,进而获取其文本内容或属性值。

定位元素常用的定位方式如下表所示。定位方式WebDriverBy写法含义iddriver.find_element(By.ID,"id值")使用元素id定位namedriver.find_element(By.NAME,"name值")使用元素name定位class_namedriver.find_element(By.CLASS_NAME,"类名")使用元素class属性定位tag_namedriver.find_element(By.TAG_NAME,"标签名")使用元素标签名称定位link_textdriver.find_element(By.LINK_TEXT,"完整链接文字")使用超链接的全部文字定位partial_link_textdriver.find_element(By.PARTIAL_LINK_TEXT,"部分链接文字")使用超链接的部分文字定位css_selectordriver.find_element(By.CSS_SELECTOR,"css表达式")使用CSS选择器定位XPathdriver.find_element(By.XPATH,"xpath表达式")使用XPath表达式定位通过id属性查找元素02

通过id属性查找元素当页面上的元素有一个唯一的id属性时,可以使用此属性来快速定位该元素。这是最直接和最有效的方法之一。以下是如何通过id查找元素的代码示例。#使用find_element方法并通过By.ID定位元素element=driver.find_element(By.ID,'unique-id')#将'unique-id'替换为实际的元素id通过class属性查找元素03

通过class属性查找元素如果多个元素共享同一个class属性,则可以通过find_elements方法来获取所有这些元素组成的列表。请注意,由于可能有多个相同class名的元素,所以这里使用复数形式的find_elements。#获取所有具有相同class属性的元素elements=driver.find_elements(By.CLASS_NAME,'common-class’)#将'common-class'替换为实际的类名通过定制方式查找元素04

通过定制方式查找元素有时需要根据更复杂的条件来查找元素,这时可以使用XPath或CSS选择器。这两种方式允许我们基于元素的结构、属性甚至内容来进行精确的匹配。下面是通过定制方式查找元素的示例。#使用XPath定位元素element=driver.find_element(By.XPATH,'//div[@class="book-item"]/h2')#根据实际情况修改XPath表达式#使用CSS选择器定位元素element=driver.find_element(By.CSS_SELECTOR,'.book-itemh2')#根据实际情况修改CSS选择器数据采集弹框处理操作

——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

自动填充弹框010203知识点自动选择下拉列表框处理弹出框

弹出登录框01

自动填充弹框在进行复杂的自动化数据采集项目时,需要掌握更高级的Selenium技术。首先是用户认证和表单交互技术,包括处理登录弹窗、填写复杂表单、处理各种输入控件等。这些技能对于访问需要身份验证的网站数据至关重要。

自动填充弹框某些网站在访问受保护资源前会要求用户登录。如果遇到这种情况,可以使用Selenium来填充用户名和密码字段,并提交表单。代码片段如下:

#定位用户名和密码输入框并填入值username=driver.find_element(By.ID,'username')password=driver.find_element(By.ID,'password')username.send_keys('your_username')#替换为实际的用户名:建军password.send_keys('your_password')#替换为实际的密码:Jj123456#提交表单login_button=driver.find_element(By.ID,'login-button')login_button.click()自动选择下拉列表框02

自动选择下拉列表框当页面上有下拉列表选择框时,可以使用Select类来简化选项的选择。首先需要导入Select类,然后实例化一个Select对象,最后调用其方法选择特定项。可以使用下列代码在下拉列表中进行自动填充。fromselenium.webdriver.support.uiimportSelectdropdown=Select(driver.find_element(By.ID,'dropdown-id'))dropdown.select_by_visible_text('OptionText')#根据可见文本选择dropdown.select_by_value('option_value')#根据value属性选择处理弹出框03

处理弹出框有时点击按钮或其他操作会导致弹出新的窗口或对话框。为了处理这类情况,可以使用switch_to.window()切换到新打开的窗口,或使用alert对象与JavaScript警告对话框互动。#切换到最新的窗口driver.switch_to.window(driver.window_handles[-1])#接受或取消警告框alert=driver.switch_to.alertalert.accept()#接受alert.dismiss()#取消项目实战——使用Selenium进行动态网页页面操作——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

任务要求010203知识点实施步骤任务小结

任务要求01

任务要求建军从用户登录开始,使用Selenium自动化工具依次执行登录人大芸窗数字教材网站、进入我的课程、访问公开课程、搜索“Python数据分析与可视化项目实战”、获取课程信息并加入新的公开课程等操作。整个过程需要模拟真实用户

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论