WebDriver 对象中的方法

发布于:2025-07-21 ⋅ 阅读:(19) ⋅ 点赞:(0)

在WebDriver对象中有大量的对浏览器进行操作的方法,其中几种常见方法的使用形式如下back ()
功能:返回到上一个页面。
forward ()
功能:前进到下一个页面。
refresh()
功能:刷新当前页面。
quit()
功能:关闭当前浏览器。
close()
功能:关闭当前标签页(一个浏览器窗口中展示的每一个网页为一个标签页,当前标签页指当前正在显示的网页)示例代码(操作浏览器):

'''前进后退刷新'''
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
chrome_options = Options()
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.ptpress.com.cn/')
elments = driver.find_elements_by_class_name("item")
elments[3].click()      #点击图书
driver.back()           #返回上一页
time.sleep(5)           
driver.forward()        #前进一页
time.sleep(5)           
driver.refresh()        #刷新网页
time.sleep(5)   
driver.quit()           #关闭浏览器

第1~9行代码与上一示例代码基本相同,即打开人民邮电出版社官网,并单击“图书”进入图书页,第10行代码使用back()方法实现返回上一个页面,即从图书页返回到官网主页。第12行代码使用forward()方法再次从官网主页前进到图书页。
第14行代码使用refresh()方法实现刷新页面。
第16行代码使用quit()方法自动关闭当前的浏览器。

注意该代码中增加了大量的sleep(5)函数,这是为了避免代码执行过快而加入的暂停操作,便于读者观察显示效果。
不启动浏览器也能获取网页资源
在通过代码获取网页中的资源时,往往并不需要启动浏览器,因为用户需要获取的是处理后的结果,而不是处理的过程。因此在驱动浏览器时,可以设置无窗口模式,即驱动浏览器后并不会打开浏览器窗口,而是将网页代码在内存中处理,类Options中的add_argument()方法即可实现在不启动浏览器的情况下获取网页资源。其使用形式如下(写入参数'--headless'即表明不启动浏览器窗口):

0ptions().add argument('--headless')

示例代码:

'''不启动浏览器窗口'''
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.ptpress.com.cn/')
elements = driver.find_elements_by_tag_name("a")
for element in elements:
   print(element.text)
driver.quit() 

第4行代码设置浏览器启动无窗口模式。因此执行代码后虽然不会显示浏览器,但浏览器仍然会在内
第9~10行代码获取人民邮电出版社官网中所有标签名为a的文本内容。读者可自行实践操作并观察执行代行数据处理。码后的显示效果。

实现获取图书数据
在工作中我们常常需要获取某网站中某款商品的全部信息,例如销量、价格、店铺名称等,以便于分析该项目描述品目前的市场情形。例如工作人员需要统计人民邮电出版社官网中与关键词“Excel”有关的全部图书,包含书名、价格、作者名等信息,并将获取的信息写入“Excel图书汇总.txt”文件中。
项目实现步骤步骤1,使用selenium库实现在人民邮电出版社官网中搜索关键词为“Excel”的图书,如图15-45所示步骤2,由于该网站存在多个页面,因此需要单击图15-45所示的标注框处的“更多”,单击后将会获取与键词“Excel”有关的全部图书内容。

步骤3,在网页中使用元素查找方法确定与关键词“Excel”有关的图书信息的元素。这一步的难点在于如何确定元素,读者需要提前在网页源代码中查询需要获取的信息的元素特征,这是因为包含特征的元素更便于使用代码来进行查找。
步骤4,在每一页中获取完全部信息后,单击“下一页”,如图15-46所示。

三我痕信息的同时使用open0图数依次将元素的内容写入T27文件中

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
chrome_options = Options()
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
driver = webdriver.Chrome(options=chrome_options)
driver.get('https://www.ptpress.com.cn/')
elments = driver.find_elements_by_class_name("item")
elments[3].click()
driver.back()  #网页返回到上一步
time.sleep(5)  #
driver.forward() #
time.sleep(5)
driver.refresh()  #刷新
time.sleep(5)
driver.quit()#关闭浏览器
time.sleep(5)
driver.close() #关闭当前窗口


 

实现获取图书数据'''
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
def get_info(driver):
   time.sleep(5)
   eles_p = driver.find_elements_by_class_name('book_item')
   for ele_p in eles_p:
       ele_p.click()
       handles = driver.window_handles #获取当前浏览器的所有标签页
       driver.switch_to.window(handles[-1]) #定位到第4个标签页
       time.sleep(5)
       name = driver.find_element_by_class_name('book-name').text
       price = driver.find_element_by_class_name('price').text
       author = driver.find_element_by_class_name('book-author').text
       file.write('图书名: {}\t价格: {}\t作者名: {}\n'.format(name, price, author))
       driver.close()
       handles = driver.window_handles #获取当前浏览器的所有标签页
       driver.switch_to.window(handles[-1]) #定位到第3个标签页
file = open('excel图书汇总.txt','w')
chrome_options = Options()
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
# chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options = chrome_options)
driver.get('https://www.ptpress.com.cn/')
elements = driver.find_elements_by_tag_name("input")
elements[1].send_keys("excel"+ Keys.RETURN)
handles = driver.window_handles #获取当前浏览器的所有标签页
driver.switch_to.window(handles[-1]) #定位到第2个标签页
driver.find_element_by_id("booksMore").click()
handles = driver.window_handles #获取当前浏览器的所有标签页
driver.switch_to.window(handles[-1]) #定位到第3个标签页
get_info(driver)
while True:
   driver.find_element_by_class_name('ivu-page-next').click()
   get_info(driver)
file.close()

第5~19行代码定义了函数get_info(),其主要功能为分析每一页中与关键词“Excel”有关的图书信息。37 fle.close()第10行代码中的window_handles()方法用于获取当前网页中的全部标签页(一个浏览器窗口中所展示的全部网页)并以列表的形式返回。第11行代码使用switch_to,window()方法(功能为切换标签页)进入对应标签页
第20行代码用于创建一个文件“Excel图书汇总.txt”,此后会将所有获取的信息写入该文件。并获取指定的内容。第23行代码add_argument('--headless)方法用于设置浏览器打开模式为无窗口模式。当读者在开始设计代码时,为了便于观察操作网页的效果,建议不要设置无窗口模式。当整个程序设计结束后,验证结果无误,为了提高代码执行速度(无界面模式仅为不展示真实的窗口,其他操作仍然会真实地在内存中运行,可提高运
第25~27行代码用于获取人民邮电出版社官网中与关键词“Excel”有关的图书页面。速度),可以设置浏览器打开模式为无窗口模式。
377
第30行代码用于单击网页中的“更多”按钮。

第33行代码调用函数get_info()获取单击“更多”按钮后出现的第1个网页中的图书信息。第34~36行代码使用while循环获取单击“下一页”按钮之后出现的信息。代码执行结束后将会获取到如图15-47所示的文件,其中保存了所有与关键词“Excel”有关的图书信息
文件的G格式(O)音看O费助
价格:33.60
作者名:黄新荣
图书名:Excel2010在会计与财务管理中的用(微课版第6版)
图书名:跟李锐学Excel数据分析
作者名:李锐
价格:63.92
作者名:秋叶 陈文登
图书名:和秋叶一起学秒Excel(全彩版)
价格:39.92
作者名:姬昂
图书名:Exce12016在会计和财管中的用(微课版第5版)价格:39.84
作者名:李宗民 姬昂
图书名:Excel2016在财务管理中的应用(微课版)价格:36.80
作者名:Excel Home
图书名:别怕 Excel的数其实很简单2
价格:63.92
作者名:沈君
价格:71.92
图书名:数据可视化必修课Excel图表制作与PPT展示
作者名:花强,张良均
图书名:Excel数据分析基础与实战
价格:39.84
作者名:林斌
图书名:金融投资建模:Excel金融数据探素、建模和分析手册价格:118.40
作者名:姚梦珂价格:47.84作者名:ExcelHome作者名:雏志资讯 龙建祥 张铁军 编著
图书名:Excel数据处理与分析一数据思维+分析方法+场景应用
图书名:Exce12016在财务管理中的应用(微课版)价格:39.84
图书名:随身查 Excel办公高手应用技巧价格:23.92图书名:和秋叶一起学--秒懂Excel价格:31.92图书名:别怕,Excel VBA其实很简单价格:47.92
图书名:随身查-Excel丽数与公式综合应用技巧价格:15.84
作者名:吴祖珍
作者名:秋叶 陈文登
作者名:Excel Home 编著
作者名:神龙工作室
价格:71.92
图书名:Excel其实很简单 从数据到分析报告
作者名:【美】Bil Jelen
图书名:Excel经典教程-VBA与宏价格:135.92
图15-47其他网站数据的获取方法与本项目案例的方法基本相同,读者可自行尝试设计一个代码程序,每天只需要启动该代码程序便能自动获取各大网站中某商品的销售数据。该方法能较为有效地提高数据统计人员的工作效率,从而实现真正的办公自动化。
总结
本章主要介绍了用于爬取HTML网页内容的requests库,以及用于提交信息至HTML网页服务器的selenium库当读者需要获取的网页信息不需要渲染即可获取时,可以使用requests库中的方法。当无法通过网页源代码获取数据时,可以使用selenium库实现渲染后再获取数据。
在实际需求中,如果读者需要将网页中的信息提取到其他文件中,例如从某购物网站中爬取某件商品的交易量并将其保存到Excel工作表中,则需要结合本章的内容、第8章的re库及第10章中操作Excel文件的知识点。如果读者需要将工作表的内容批量提交至网页中,例如财会人员需要将统计的数据从工作表中上传至公司财会数据系统(HTML网页)中,可以先使用第10章的知识点实现自动化处理数据,然后使用requests库中的post()函数或selenium库中的send_keys()方法将处理完的数据上传至HTML网页中,从而实现自动化处理
据,减少频繁的机械操作。由于本书篇幅有限,不能将所有的细节知识点一一展示,为了更大程度地掌握知识点,读者需要在掌握了本书中列举的常用网络爬虫功能后,多阅读和分析库的源代码,多实践和验证源代码中给出的方法和函数。爬虫有风险,读者切莫使用本章知识爬取非法网络资源、侵害网络安全秩序,请读者务必遵守《中华人民共积国网络安全法》等相关法律条文。


网站公告

今日签到

点亮在社区的每一天
去签到