IT评测·应用市场-qidao123.com

标题: 第五课:动态网页破解:Selenium自动化技术解析 [打印本页]

作者: 慢吞云雾缓吐愁    时间: 2025-3-8 14:44
标题: 第五课:动态网页破解:Selenium自动化技术解析
在当前前端技术发展的情况下,越来越多的网站都是动态加载数据或则动态渲染页面。本文将具体介绍Selenium动态抓取页面数据,包括浏览器ChromeDriver加载及调用,并通过加载淘宝页面并进行登陆的案例来展示它们的实际应用。

一、动态网页加载机制解析

1.1 动态网页概述

动态网页是指在用户访问时,网页内容不是一次性加载完成,而是根据用户的操纵或需求,通过异步加载数据或资源,实现内容的动态更新。这种技术可以明显进步页面加载速度,减少首次加载时间,提升用户体验。
1.2 动态加载实现方式

动态加载通常通过AJAX(Asynchronous JavaScript and XML)技术实现,JavaScript可以在不重新加载整个页面的情况下更新部分内容。别的,一些当代前端框架如Vue、React等也提供了丰富的组件和API,使得动态加载变得更加简朴。
1.3 动态加载对爬虫的影响

对于网络爬虫而言,动态加载技术增加了数据抓取的难度。传统的爬虫工具可能无法直接获取到通过JavaScript动态加载的内容,因此需要利用Selenium等自动化测试工具来模拟浏览器的行为,从而获取到完整的页面内容。
二、WebDriver设置(Chrome/Firefox)

2.1 WebDriver简介

WebDriver是Selenium与浏览器进行交互的桥梁,它允许我们控制浏览器,执行各种操纵,如打开网页、填写表单、点击按钮等。不同的浏览器需要下载对应的WebDriver。
2.2 Chrome WebDriver设置

1. 检察Chrome浏览器版本号:
        1. 在Chrome浏览器中,通过“设置”>“关于Chrome”检察版本号。
        2. 或者在地址栏输入chrome://version/检察。
2. 下载ChromeDriver:
        1. 访问ChromeDriver下载,下载与Chrome浏览器版本相匹配的ChromeDriver。
        2. windows:将下载的ChromeDriver解压,并将chromedriver.exe放置在Python安装目录下的Scripts文件夹中,或者将其路径添加到系统的PATH环境变量中。
        3. mac:将下载后的文件进行加压
  1. # 将目录下的chromedriver文件移动到/usr/local/bin
  2. sudo mv chromedriver /usr/local/bin
  3. # 修改chromedriver的权限
  4. sudo chmod +x /usr/local/bin/chromedriver
  5. # 查看chromedriver的版本
  6. chromedriver --version
复制代码
3. 测试设置
  1. from selenium import webdriver
  2. driver = webdriver.Chrome()
  3. driver.get("https://www.baidu.com")
  4. driver.quit()
复制代码
三、元素定位八大方法

在Selenium自动化测试中,定位页面元素是关键的一步。以下是八种常用的元素定位方法:
3.1 ID定位

  1. element = driver.find_element(By.ID, "element_id")
复制代码
3.2 Name定位

  1. element = driver.find_element(By.NAME, "element_name")
复制代码
3.3 Tag Name定位

  1. elements = driver.find_elements(By.TAG_NAME, "tag_name")
复制代码
3.4 Class Name定位

  1. elements = driver.find_elements(By.CLASS_NAME, "class_name")
复制代码
3.5 Link Text定位

  1. element = driver.find_element(By.LINK_TEXT, "link_text")
复制代码
3.6 Partial Link Text定位

  1. element = driver.find_element(By.PARTIAL_LINK_TEXT, "partial_link_text")
复制代码
3.7 CSS Selector定位

  1. element = driver.find_element(By.CSS_SELECTOR, "css_selector")
复制代码
3.8 XPath定位

  1. element = driver.find_element(By.XPATH, "xpath_expression")
复制代码
四、案例:模拟登录淘宝

4.1 准备工作

确保已安装Python环境,并安装必要的库:
  1. pip install selenium requests
复制代码
4.2 淘宝登录流程分析

淘宝的登录流程相对复杂,涉及验证码判定、用户名密码验证、单点登录(SSO)等多个步调。以下是一个简化的模拟登录流程:

4.3 实当代码

  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. from selenium.webdriver.support.ui import WebDriverWait
  4. from selenium.webdriver.support import expected_conditions as EC
  5. # 配置不关闭浏览器
  6. driver_option = webdriver.ChromeOptions()
  7. driver_option.add_experimental_option('detach', True)
  8. driver = webdriver.Chrome(options=driver_option)
  9. driver.implicitly_wait(10)
  10. try:
  11.     # 访问淘宝登录页面
  12.     driver.get("https://login.taobao.com/member/login.jhtml")
  13.     # 输入用户名
  14.     username_input = driver.find_element(By.ID, "fm-login-id")
  15.     username_input.send_keys("your_account")
  16.     # 输入密码
  17.     password_input = driver.find_element(By.ID, "fm-login-password")
  18.     password_input.send_keys("your_password")
  19.     # 点击登录按钮
  20.     login_button = driver.find_element(By.ID, "J_SubmitStatic")
  21.     login_button.click()
  22.     # 等待登录成功(此处简化处理,假设登录成功)
  23.     WebDriverWait(driver, 10).until(
  24.         EC.presence_of_element_located((By.ID, "TB_trace_logo"))
  25.     )
  26.     print("登录成功!")
  27.     # 获取淘宝昵称(验证登录成功)
  28.     nickname = driver.find_element(By.CSS_SELECTOR, "#nick-name em").text
  29.     print(f"淘宝昵称:{nickname}")
  30. finally:
  31.     # 关闭浏览器
  32.     driver.quit()
  33.     print('--------------------- finally')
复制代码
4.4 注意事项


通过本文的介绍,我们了解了动态网页加载机制、WebDriver的设置方法、元素定位的八大方法,并通过模拟登录淘宝的案例展示了Selenium自动化技术的应用。希望这些内容能对你有所资助!
关注我!!




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4