问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Selenium WebDriver 入门:动态网页抓取基础操作

创作时间:
作者:
@小白创作中心

Selenium WebDriver 入门:动态网页抓取基础操作

引用
CSDN
1.
https://blog.csdn.net/m0_73360524/article/details/146127581

Selenium 是一个强大的 Web 自动化测试工具,常用于动态网页的数据抓取。本文将介绍 Selenium 中 WebDriver 类的基础属性和方法,帮助读者快速入门动态网页抓取。

WebDriver 类基础属性 & 方法

为模仿用户真实操作浏览器的基本过程,Selenium 的 WebDriver 模块提供了一个 WebDriver 类(表示浏览器),该类中提供了一些诸如打开浏览器、关闭浏览器、刷新浏览器、前进、后退等入门操作的方法和属性:

属性 OR 方法
解析
title
获取当前页面的标题
current_url
获取当前页面的 URL 地址
page_source
获取当前页面的 HTML 代码(渲染后的)
get()
根据指定的 URL 地址访问页面
maximize_window()
设置浏览器窗口最大化
forward()
页面前进
back()
页面后退
refresh()
刷新当前页面
save_screenshot()
截取当前浏览器窗口
close()
关闭当前页面
quit()
关闭浏览器

get() 方法 & page_source 属性

使用 get() 方法可以操作浏览器访问的目标网页,使用 page_source 可以获取当前页面整体的源代码(渲染后的),比如下面的例子,我们尝试访问 taobao.com 并抓取渲染好的页面:

from selenium import webdriver

driver = webdriver.Chrome() # 创建浏览器对象
driver.get("https://taobao.com")          # 访问淘宝首页

# 因为从访问淘宝到淘宝加载商品数据中间有一段时间,所以我们得强制等待一会,等待页面完全加载
print(driver.page_source)  # 打印渲染好的页面
# print(driver.title)      # 获取当前页面的标题
# print(driver.current_url) # 获取当前页面的 URL 地址

如上,我们成功抓取了淘宝官网动态加载后的页面数据,只要再结合之前学习的数据提取方法,我们就能够很轻松的从动态页面中抓取我们想要的数据啦。

对于 title 属性与 current_url 属性相信聪明如你一定知道是提取啥的了吧,笔者后面就不特意讲了,如果不知道的话,自己跑跑呗(把上面注释去掉就行)。

maximize_window() 方法

使用 Selenium 启动浏览器后,浏览器的窗口默认不是以最大化形式显示的,此时通过调用 maximize_window() 方法即可实现浏览器窗口最大化:

from selenium import webdriver

driver = webdriver.Chrome() # 创建浏览器对象
driver.get("https://taobao.com")          # 访问淘宝首页

forward()、back()、refresh() 方法

经常用浏览器的你肯定对下面三个小按钮非常熟悉,它们就是后退(←)、前进(→)和刷新按钮:

下面介绍 forward()back()refresh() 方法就对应上面那几个功能,下面是一个示例代码:

from selenium import webdriver

driver = webdriver.Chrome() # 创建浏览器对象
driver.maximize_window()    # 让浏览器窗口最大化
driver.get("https://taobao.com")          # 访问淘宝首页
driver.get("https://www.baidu.com")       # 访问百度首页
driver.back()                             # 模拟回退按钮,回退到淘宝首页
driver.forward()                          # 模拟前进按钮,前进到百度首页
driver.refresh()                          # 模拟刷新按钮,刷新页面

对于代码的执行效果,还得是观众老爷自己运行看看(笔者建议是自己敲一遍),这里笔者就不放图了。

save_screenshot()、close()、quit() 方法

通过 WebDriver 类的 save_screenshot() 放啊我们可以截取当前的窗口并将其保存为 PNG 格式的图像文件,比如下面这个例子,我们尝试截取淘宝首页图片,并保存为 taobao.png

from selenium import webdriver

driver = webdriver.Chrome() # 创建浏览器对象
driver.maximize_window()    # 让浏览器窗口最大化
driver.get("https://taobao.com")          # 访问淘宝首页
print("[ + ] 成功访问淘宝首页! 三秒后开始截图操作 ....")
driver.save_screenshot('taobao.png')
print("[ + ] 截屏完成,保存为了 taobao.png,三秒后将关闭当前页面 ....")
print("[ + ] 成功关闭页面, 3 秒钟后将关闭浏览器,退出程序 .....")

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号