技能树-网络爬虫-selenium

news/2024/7/19 11:29:14 标签: 爬虫, selenium, python

文章目录

前言

大家好,我是空空star,本篇给大家分享一下《技能树-网络爬虫-selenium

selenium_6">一、selenium

Selenium是web自动化测试工具集,爬虫可以利用其实现对页面动态资源的采集,对于其这种说法错误的是:

A.selenium本质是驱动浏览器来发送请求,模拟浏览器的行为
B.页面执行 js 才能呈现的内容,可以使用 selenium 来协助采集
C.请求之后往往需要等待一段时间,等待资源加载渲染完成
D.selenium和requests一样,都能用来采集数据,具有同等的速度

分析:
A是对的,Selenium是一个自动化测试工具,可以通过编程语言(如Python、Java)来驱动浏览器,模拟人工操作来访问网页并获取数据。
B是对的,有execute_script()方法;
C是对的,可以通过显示等待、隐式等待、强制等待设置等待时间;
D是错的,Selenium不能像requests那样直接发送HTTP请求,而是通过模拟用户在浏览器上的操作来访问网页,因此相对来说会比requests更慢一些。

selenium__18">二、selenium 测试用例

Selenium 是web自动化测试工具集,爬虫可以利用其实现对页面动态资源的采集。请按顺序操作:

  1. 安装 Python Selenium 包:pip install selenium
  2. 安装 Chrome 驱动:https://npm.taobao.org/mirrors/chromedriver/,如果使用别的浏览器需要下载对应浏览器的驱动
  3. 编写使用 python unittest 测试使用 selenium 完成自动化

selenium 自动化网页测试的操作:

  1. 使用 selenium 的Chrome 驱动,打开 CSDN 首页,此时会打开 Chrome 浏览器测试页面
  2. 验证字符串 “CSDN” 在页面标题
  3. 找到网页里的搜索框
  4. 输入"OpenCV技能树"
  5. 输入回车,搜索结果
  6. 等待10秒退出

代码框架如下:

python"># -*- coding: UTF-8 -*-
import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_search_in_python_org(self):
        # TODO(You): 请正确实现浏览器自动化测试需求
        time.sleep(10)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()

以下代码实现正确的是?
A.

python">def test_search_in_python_org(self):
    driver = self.driver
    driver.get("https://www.csdn.net/")
    self.assertIn("CSDN", driver.title)
    elem = driver.find_element_by_id("toolbar-search-input")
    elem.send_keys(Keys.RETURN)
    assert "No results found." not in driver.page_source
    time.sleep(10)

B.

python">def test_search_in_python_org(self):
    driver = self.driver
    driver.get("https://www.csdn.net/")
    self.assertIn("CSDN", driver.title)
    elem = driver.find_element_by_id("toolbar-search-input")
    elem.send_keys("OpenCV技能树")
    elem.send_keys(Keys.RETURN)
    assert "No results found." not in driver.page_source
    time.sleep(10)

C.

python">def test_search_in_python_org(self):
    driver = self.driver
    driver.get("https://www.csdn.net/")
    self.assertIn("CSDN", driver.title)
    elem = driver.find_element_by_id("toolbar-search-input")
    elem.send_keys("OpenCV技能树")
    assert "No results found." not in driver.page_source
    time.sleep(10)

D.

python">def test_search_in_python_org(self):
    driver = self.driver
    driver.get("https://www.csdn.net/")
    self.assertIn("CSDN", driver.title)
    elem = driver.find_element_by_name("toolbar-search-input")
    elem.send_keys("OpenCV 技能树")
    elem.send_keys(Keys.RETURN)
    assert "No results found." not in driver.page_source
    time.sleep(10)

分析:
A是错的,没有向输入框输入 OpenCV技能树;
B是对的;
C是错的,没有回车查询;
D是错的,定位方式不对,通过下图可以看到输入框的 id="toolbar-search-input"并不是name

总结


http://www.niftyadmin.cn/n/464916.html

相关文章

VB+ACCESS汽车销售系统设计与实现(源代码+系统+答辩PPT)

引 言目前,大量的中小企业中,存在这样的现象:分散的、不连贯的客户信息使企业管理者或企业相关人员无法看到客户的全部资料及相关资料,信息的分散使得产生的结果也无法保持一致性和完整性,造成中小企业在销售管理上存如下问题: 无法分类统计客户信息(对客户分类极为混乱…

SynchronousQueue源码

介绍 SynchronousQueue作为阻塞队列的时候,对于每一个take的线程会阻塞直到有一个put的线程放入元素为止,反之亦然。在SynchronousQueue内部没有任何存放元素的能力。所以类似peek操作或者迭代器操作也是无效的,元素只能通过put类操作或者ta…

RISCV Reader笔记_2 RV32I

RV32I 完整的RV32I指令集可以用下面的式子中出现单词的首字母表示: 比如这一条: set less than {immediate} {unsigned} 也就是slt slti sltu sltiu这4个指令。 RISCV指令格式如下。R 寄存器操作,I 立即数或load访存,S store访…

ModaHub魔搭社区:向量数据库的工作原理

目录 1. 为什么需要向量数据库 1)CPU 工作原理 2)GPU 工作原理 3)二者的差异 4)总结 5)大模型的工作原理 学习 推理 1. 为什么需要向量数据库 向量数据库这一概念随着黄仁勋的演讲火爆了之后,不少…

idea乱码的相关问题

idea控制台乱码(即:tomacat等启动时的乱码) 第一步: 控制台tomcat启动信息乱码解决(红色字体) 1 在本地 tomcat 的配置文件中找到 logging.properties 文件设置日志输出的编码为 UTF-8 追加的配置信息为…

1.1-python课程简介

一、python入门 1、python来源2、什么是python3、python编程软件下载4、python软件安装5、python软件运行和调试 1、python来源 Guido van Rossum 于1989年在荷兰国家数学和计算机科学研究所设计出来的。 2、什么是python Python 是一个高层次的结合了解释性、编译性、互动性…

如何使用upupw搭建服务器,并映射外网访问

作为计算机行业从业人员,相信很多人都接触并使用过phpstudy等类似环境集成包,着对于upupw就比较好理解了。UPUPW绿色服务器平台是Windows下很有特色的一款免费服务器PHP套件,UPUPW PHP套件简化了PHP环境搭建步骤,一个压缩包解压到…

【运动规划算法项目实战】如何构建欧几里德符号距离场(附ROS C++代码)

文章目录 前言一、ESDF原理1.1 ESDF的基本概念1.2 构建ESDF的关键步骤1.3 ESDF在路径规划中的应用1.4 TSDF 与 ESDF的区别1.4.1 截断符号距离场(Truncated Signed Distance Function,TSDF):1.4.2 欧几里德符号距离场(Euclidean Signed Distance Field,ESDF):二、构建ES…