selenium爬虫学习1

羊蹓狼  金牌会员 | 2024-8-29 10:02:22 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 886|帖子 886|积分 2658

简介

Selenium是广泛使用的模仿欣赏器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在欣赏器中,就像真正的用户在操作一样,并且支持大多数现代 Web 欣赏器。
函数介绍
  1. 重点方法
  2. 1.find_element方法是 Selenium WebDriver 提供的一种用于查找页面上某个符合条件的元素的方法。
  3. 2.find_elements 方法是 Selenium WebDriver 提供的一种用于查找页面上所有符合条件的元素的方法。与 find_element 不同,find_elements 返回的是一个列表,其中包含所有匹配的元素。如果没有找到任何元素,则返回一个空列表。
  4. 以下是 find_element(s) 方法的一些常见用法:
  5. By.ID:通过元素的 ID 查找。
  6. By.NAME:通过元素的 name 属性查找。
  7. By.CLASS_NAME:通过元素的类名查找。
  8. By.TAG_NAME:通过元素的标签名查找。
  9. By.LINK_TEXT:通过链接文本查找。
  10. By.PARTIAL_LINK_TEXT:通过部分链接文本查找。
  11. By.CSS_SELECTOR:通过 CSS 选择器查找。
  12. By.XPATH:通过 XPath 表达式查找。
  13. driver.find_element对象具有.click()方法,就是点击这个元素
  14. 3.driver.window_handles获取当前所有窗口句柄
  15. 4.driver.switch_to.window()跳转到某个窗口
复制代码
练习代码
  1. from selenium import webdriver
  2. from selenium.webdriver.common.by import By
  3. import time
  4. # 初始化浏览器驱动
  5. driver = webdriver.Chrome()
  6. # 打开百度首页
  7. driver.get("https://avd.aliyun.com/")
  8. time.sleep(2)
  9. # 定位输入框并输入关键字
  10. search_box = driver.find_element(By.XPATH, "/html/body/header/nav/div/form/input")
  11. search_box.send_keys("MySQL")
  12. # 点击搜索按钮
  13. search_button = driver.find_element(By.XPATH, '/html/body/header/nav/div/form/button')
  14. search_button.click()
  15. # 等待2秒
  16. time.sleep(2)
  17. res_header=driver.find_element(By.ID,'itl-header')
  18. print(res_header.text)
  19. tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
  20. for tr in tr_elements:
  21.     # 在这里对每个tr元素进行操作,例如提取文本内容
  22.     print(tr.text)
  23. link = driver.find_element(By.PARTIAL_LINK_TEXT, "AVD-2024-21177")
  24. link.click()
  25. all_windows = driver.window_handles
  26. driver.switch_to.window(all_windows[-1])
  27. searchclass=driver.find_elements(By.CSS_SELECTOR, '.border-bottom.border-gray.pb-2.mb-0')
  28. for search in searchclass:
  29.     print(search.text)
  30. input("Press Enter to close the browser...")
  31. # 关闭浏览器
  32. driver.quit()
复制代码
运行结果


运行过程

运行后先是打开欣赏器进入阿里云毛病库,紧接着搜索MYSQL相干毛病,结果如下

通过html的id属性找到“搜索结果 关于[mysql]的搜索数据”这几个字打印出来
  1. tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
  2. res_header=driver.find_element(By.ID,'itl-header')
  3. print(res_header.text)
复制代码
通过xpath找到tbody内里全部行,遍历并打印内容
  1. tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
  2. for tr in tr_elements:
  3.     # 在这里对每个tr元素进行操作,例如提取文本内容
  4.     print(tr.text)
复制代码

随便定位一个毛病介绍的链接点进去:
  1. link = driver.find_element(By.PARTIAL_LINK_TEXT, "AVD-2024-21177")
  2. link.click()
  3. all_windows = driver.window_handles  # 获取所有窗口的句柄
  4. driver.switch_to.window(all_windows[-1])#有的浏览器并不会自动跳转到点开的标签页,所以可以获取当前所有标签页再利用函数跳转
复制代码

打印全部的元素
  1. searchclass=driver.find_elements(By.CSS_SELECTOR, '.border-bottom.border-gray.pb-2.mb-0')
  2. for search in searchclass:
  3.     print(search.text)
复制代码
因为class的值包含空格所以不能直接By.CLASS寻找,用By.CSS_SELECTOR,每个值用点号分隔
关闭欣赏器

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

羊蹓狼

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表