编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)

系列文章目录

编程小白的自学笔记十(python爬虫入门二+实例代码详解

编程小白的自学笔记九(python爬虫入门+代码详解)

编程小白的自学笔记八(python中的多线程)

编程小白的自学笔记七(python中类的继承)


目录

系列文章目录

文章目录

前言

一、Selenium是什么

二、安装Selenium

三、第一个例子(打开百度浏览器)

四、第二个例子(在百度搜索框内输入内容)

总结


前言

作为一个编程小白,目前按照书籍已经学完爬虫部分,但是书上的爬虫过于基础,难以实战,于是我又跟在"以山河作礼。"大佬的专栏后面学,今天学习到了Selenium的使用,记录一下。


**一、**Selenium是什么

官方回答是:Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。 Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。
我个人理解这东西可以模拟一些人的操作,具体有哪些,我们一步一步看(我也是边学边记)。

二、安装Selenium

pip install selenium,就是这么简单,不说了。大佬的文章里都会说下一个浏览器的驱动,然后操作驱动,我们先试试不用驱动行不行。

三、第一个例子(打开百度浏览器)

我们先看示例代码:

复制代码
from selenium import webdriver

drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
复制代码
输出结果是错误的,提示:"The version of chrome cannot be detected. Trying with latest driver version",这个错误就表示使用的驱动程序与安装的Chrome版本不兼容,看来必须下驱动了,但是我在另一台电脑上运行这段代码是可以的,于是我仔仔细细找了一遍,发现电脑里的谷歌浏览器运行文件名竟然是chrone.exe,抱着试一试的态度,我将其改成chrome.exe,运行果然成功了。

下面详细分析一下代码:

"from selenium import webdriver"的意思是:webdriver是selenium库中提供的一个类,它代表了一个浏览器实例,可以被用来控制浏览器进行各种操作。通过使用from selenium import webdriver,我们可以直接使用webdriver类来创建一个Chrome浏览器实例,并通过该实例来控制浏览器进行各种操作。

后面的三个代码就很好理解了,创建实例,设置窗口大小,输入打开的网页地址。

四、第二个例子(在百度搜索框内输入内容)

selenium提供了两个方法来获取元素位置。

find_element获取满足条件的第一个元素

find_elements获取满足条件的所有元素

这两个方法可以通过ID或者name来确定元素的位置,我们都来试试。
首先我们先了解一下网页,在检查模式下,我们可以看到输入框的html代码为:

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
我们分析这段网页代码,它的ID属性是"kw",那么我们尝试编写一段代码,在输入框输入"加油",代码如下:

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By


drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
drive.find_element(By.ID, 'kw').send_keys('加油')

成功运行,结果如下图:

我们再试试name属性,代码如下:

复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
drive.find_element(By.NAME, 'wd').send_keys('躺平')

也是成功运行的:

照例,我们来分析代码

"from selenium.webdriver.common.by import By"的意思是Selenium库的webdriver.common.by模块中导入了By类。

"drive.find_element(By.NAME, 'wd').send_keys('躺平')"就是通过NAME定位,输入"躺平"。

同样定位的方法还有很多,例如:

drive.find_element(By.CLASS_NAME, 's_ipt').send_keys('躺平')


总结

Selenium是一个支持各大浏览器的自动化测试工具,包括 Chrome,Safari,Firefox ,ie等。它可以直接运行在浏览器中,就如同真正的客户在使用一样。Selenium可以用于爬虫,解决一些复杂爬虫的问题。使用Selenium可以获取动态的网页数据,一些动态的数据在网页的源代码中并没有显示,这时候可以考虑用Selenium获取。
以下是selenium常用的一些方法 :

  • `driver.get(url)`:打开一个网页。

  • `driver.find_element_by_*()`:通过各种方式查找元素。

  • `driver.find_elements_by_*()`:通过各种方式查找元素,返回的是一个列表。

  • `driver.execute_script(*args)`:执行JavaScript代码。

  • `driver.switch_to.window(*args)`:切换到指定窗口。

  • `driver.switch_to.frame(*args)`:切换到指定frame。

  • `driver.back()`:返回上一个页面。

  • `driver.forward()`:前进到下一个页面。

  • `driver.refresh()`:刷新当前页面。

相关推荐
IT_陈寒12 分钟前
Redis实战:5个高频应用场景下的性能优化技巧,让你的QPS提升50%
前端·人工智能·后端
hd51cc14 分钟前
MFC多线程学习笔记三:线程间的通信
笔记·学习
逻辑棱镜16 分钟前
Git 分支管理与提交信息规范 (v1.0)
git·github·团队开发·代码规范·敏捷流程
hd51cc16 分钟前
MFC多线程学习笔记四:线程间的同步
笔记·学习·mfc
AI小云19 分钟前
【数据操作与可视化】Pandas数据处理-其他操作
python·pandas
龙智DevSecOps解决方案23 分钟前
Perforce《2025游戏技术现状报告》Part 1:游戏引擎技术的广泛影响以及生成式AI的成熟之路
人工智能·unity·游戏引擎·游戏开发·perforce
大佬,救命!!!26 分钟前
更换适配python版本直接进行机器学习深度学习等相关环境配置(非仿真环境)
人工智能·python·深度学习·机器学习·学习笔记·详细配置
星空的资源小屋34 分钟前
VNote:程序员必备Markdown笔记神器
javascript·人工智能·笔记·django
wdfk_prog37 分钟前
[Linux]学习笔记系列 -- [block]bfq-iosched
linux·笔记·学习
梵得儿SHI37 分钟前
(第七篇)Spring AI 基础入门总结:四层技术栈全景图 + 三大坑根治方案 + RAG 进阶预告
java·人工智能·spring·springai的四大核心能力·向量维度·prompt模板化·向量存储检索