首页 > 其他分享 >selenium爬虫学习1

selenium爬虫学习1

时间:2024-08-29 11:25:37浏览次数:12  
标签:elements selenium driver 爬虫 tr 学习 div element find

简介

Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,并且支持大多数现代 Web 浏览器。

函数介绍


重点方法
1.find_element方法是 Selenium WebDriver 提供的一种用于查找页面上某个符合条件的元素的方法。
2.find_elements 方法是 Selenium WebDriver 提供的一种用于查找页面上所有符合条件的元素的方法。与 find_element 不同,find_elements 返回的是一个列表,其中包含所有匹配的元素。如果没有找到任何元素,则返回一个空列表。
以下是 find_element(s) 方法的一些常见用法:
By.ID:通过元素的 ID 查找。
By.NAME:通过元素的 name 属性查找。
By.CLASS_NAME:通过元素的类名查找。
By.TAG_NAME:通过元素的标签名查找。
By.LINK_TEXT:通过链接文本查找。
By.PARTIAL_LINK_TEXT:通过部分链接文本查找。
By.CSS_SELECTOR:通过 CSS 选择器查找。
By.XPATH:通过 XPath 表达式查找。
driver.find_element对象具有.click()方法,就是点击这个元素
3.driver.window_handles获取当前所有窗口句柄
4.driver.switch_to.window()跳转到某个窗口

练习代码

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 初始化浏览器驱动
driver = webdriver.Chrome()

# 打开百度首页
driver.get("https://avd.aliyun.com/")
time.sleep(2)

# 定位输入框并输入关键字
search_box = driver.find_element(By.XPATH, "/html/body/header/nav/div/form/input")
search_box.send_keys("MySQL")

# 点击搜索按钮
search_button = driver.find_element(By.XPATH, '/html/body/header/nav/div/form/button')
search_button.click()
# 等待2秒
time.sleep(2)
res_header=driver.find_element(By.ID,'itl-header')
print(res_header.text)
tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
for tr in tr_elements:
    # 在这里对每个tr元素进行操作,例如提取文本内容
    print(tr.text)
link = driver.find_element(By.PARTIAL_LINK_TEXT, "AVD-2024-21177")
link.click()
all_windows = driver.window_handles
driver.switch_to.window(all_windows[-1])
searchclass=driver.find_elements(By.CSS_SELECTOR, '.border-bottom.border-gray.pb-2.mb-0')
for search in searchclass:
    print(search.text)
input("Press Enter to close the browser...")
# 关闭浏览器

driver.quit()

运行效果

运行过程

运行后先是打开浏览器进入阿里云漏洞库,紧接着搜索MYSQL相关漏洞,结果如下

通过html的id属性找到“搜索结果 关于[mysql]的搜索数据”这几个字打印出来

tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
res_header=driver.find_element(By.ID,'itl-header')
print(res_header.text)

通过xpath找到tbody里面所有行,遍历并打印内容

tr_elements = driver.find_elements(By.XPATH,"/html/body/main/div[2]/div/div[2]/table/tbody")
for tr in tr_elements:
    # 在这里对每个tr元素进行操作,例如提取文本内容
    print(tr.text)

随便定位一个漏洞介绍的链接点进去:

link = driver.find_element(By.PARTIAL_LINK_TEXT, "AVD-2024-21177")
link.click()
all_windows = driver.window_handles  # 获取所有窗口的句柄
driver.switch_to.window(all_windows[-1])#有的浏览器并不会自动跳转到点开的标签页,所以可以获取当前所有标签页再利用函数跳转

打印所有class="border-bottom border-gray pb-2 mb-0"的元素

searchclass=driver.find_elements(By.CSS_SELECTOR, '.border-bottom.border-gray.pb-2.mb-0')
for search in searchclass:
    print(search.text)

因为class的值包含空格所以不能直接By.CLASS寻找,用By.CSS_SELECTOR,每个值用点号分隔

关闭浏览器

标签:elements,selenium,driver,爬虫,tr,学习,div,element,find
From: https://www.cnblogs.com/hackzz/p/18386310

相关文章

  • 深入学习电路基础:从理论到实践
    引言电路是电子学的核心,也是现代科技的基石。从简单的灯泡开关到复杂的计算机处理器,电路在各类电子设备中都起到了至关重要的作用。深入学习电路知识不仅有助于理解电子设备的工作原理,还能够为实际设计和开发电子产品打下坚实的基础。本文将通过对电路基本概念、重要定律、常......
  • Stable Diffusion学习-提示词学习(一)
    image提示词一个男孩,在校园里,打篮球,Aboy,insidetheschoolyard,playingbasketball,正面提示词后请添加:(masterpiece:1,2),bestquality,highres,original,extremelydetailedwallpaper,perfectlighting,(extremelydetailedCG:1.2),负面提示词后请添加:NSFW,(w......
  • 基于 Selenium 的 Python 自动化测试框架
    SeleniumBase:功能全面的浏览器自动化框架。该项目是基于Selenium的Python自动化测试框架,集成了爬虫、自动化测试和生成报告等多种功能。它提供了丰富的示例,并且独特的UC模式,可以帮助开发者在进行浏览器自动化操作时避免被检测出来。from seleniumbase import BaseCaseBa......
  • AirSlam C++ 代码学习
    问题1:reserve函数是什么?reserve是C++标准库中std::vector类的一个成员函数,用于预留一定数量的内存空间,以避免在向量增长时频繁进行内存分配和复制操作,从而提高性能。具体来说,reserve(n)会为向量预留至少n个元素的内存空间,但不会改变向量的大小(即不会添加任何元素)。这......
  • 一起学习LeetCode热题100道(61/100)
    61.分割回文串(学习)给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。示例1:输入:s=“aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]示例2:输入:s=“a”输出:[[“a”]]提示:1<=s.length<=16s仅由小写英文字母......
  • git 学习
    git学习git学习推荐课程和笔记02-深入Git(yuque.com)尚硅谷Git教程全套完整版(12h深入掌握git)_哔哩哔哩_bilibiligit工作区git工作区流程图参考博客;【Git】(1)---工作区、暂存区、版本库、远程仓库-雨点的名字-博客园(cnblogs.com)【Git】---工作区、暂存区、版......
  • Markdown学习
    一.ai返回的内容1.深入浅出的讲解Markdown及其详细语法Markdown是一种轻量级的标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)。Markdown的语法简洁明了,使得文档编写更加高效和专注。Markdown的基本语法包括:标题:使用#符号表示标题,#的数量......
  • [学习笔记] Splay & Treap 平衡树 - 数据结构
    [学习笔记]Splay&Treap平衡树-数据结构Splay树又名伸展树,一种平衡二叉查找树,通过\(\text{Splay}\)操作不断把节点旋到根节点来维护整颗树的平衡。说人话,很玄学的玩意,复杂度是单log级别的。为啥是单log,科学的解释请移步OI-WIKI。不科学的解释就是,通过不断\(\tex......
  • 生信学习好帮手——生信云服务器,分析更[省心]的云
    开篇生物信息学(Bioinformatics)相关领域的快速迭代带来了学习门槛的显著变化,呈现出一种k型分化。一方面,人工智能(AI)和云计算技术的融合降低了原本高门槛的生物信息学技术的入门难度。另一方面,随着越来越多的研究者涌入这一领域,发表文章的难度也随之增加,这要求研究者在专业......
  • 亦菲喊你来学机器学习(15) --支持向量机SVM
    文章目录支持向量机一、基本概念二、工作原理三、算法特点四、优缺点优点缺点五、构建模型模型参数训练模型可视化svm结果总结支持向量机支持向量机(SupportVectorMachine,SVM)是一种强大的机器学习算法,主要用于分类和回归分析,尤其擅长处理二元分类问题。以下是......