【Python】Selenium切換網頁的標簽頁的寫法(全!!!)

在使用selenium做網站爬取測試的時候,我們經常會遇到一些需要點擊的元素,才能點擊到我們想要進入的頁面,

于是我們就要模擬 不斷地 點點點擊 鼠標的樣子。

這個時候網頁上就會有很多的標簽頁,你的瀏覽器網頁標簽欄 be like:
你的

那么,怎么切換頁面,并返回到上一頁呢?

  1. 打包切換頁面的邏輯
def switch_windows(index):#獲取當前句current_window_handle = driver.current_window_handleprint(current_window_handle )#獲取所有句柄all_handles = driver.window_handlesprint(all_handles )#切換至第二個窗口driver.switch_to.window(all_handles [index])print(driver.title) #獲取目前內容頁的信息
  1. 點擊按鈕跳到下一頁 --> 切換到新頁面 -->操作新頁面內容 --> 返回上一頁
#點擊按鈕,跳轉到下一個頁面
element=driver.find_element(By.XPATH,input_)
element.click()#切換到最后一個頁面-新頁面
switch_windows(index=-1)#讀取頁面的信息
sleep(1)
page_html=driver.page_source  
page_soup=BeautifulSoup(page_html,'lxml') #返回首頁
switch_windows(index=0)

除了用點擊到下一頁的方法,也可以模擬標簽點開的方法(強推!!!好用)

原理是,網頁模擬點開標簽,然后把網址輸入進去的過程

driver.execute_script("window.open('https://www.google.com')")  # 新標簽頁1
driver.execute_script("window.open('https://www.python.org')")  # 新標簽頁2
  1. 返回首頁以后,我們要把后面不用的其他標簽頁關閉掉:
# 獲取所有標簽頁的句柄(handles)
all_handles = driver.window_handles  # 返回所有標簽頁的ID列表
homepage_handle = all_handles[0]  # 首頁通常是第一個標簽頁# 關閉其他標簽頁(保留首頁)
for handle in all_handles:if handle != homepage_handle:  # 如果不是首頁driver.switch_to.window(handle)  # 切換到該標簽頁driver.close()  # 關閉它# 最后切換回首頁
driver.switch_to.window(homepage_handle)print("已關閉其他標簽頁,僅保留首頁")
  1. 如果不確定在讀取頁面的時候,是不是讀取到自己想要的那個網址,可以使用讀取網址的方式判斷:
print("當前頁面URL:", driver.current_url)

也可以跟自己的目標網址做判斷,如果不對的話,則切換到上一個界面

current_url=    driver.current_url
if current_url != target_url:switch_windows(index=-2) #比最后一個網址再上一個頁面

這部分內容在【返回首頁】的代碼之前,效果如:
在這里插入圖片描述

PS:

一些網站的HTML內部會設置一些【點擊事件處理屬性】,

當用戶點擊這個元素時,會觸發 onclick 中定義的 JavaScript 代碼,類似下面的代碼。

在這里插入圖片描述
在這里插入圖片描述

這種可能就要點擊網頁上的元素,才能獲取網絡響應,直接跳轉到該網址上,是行不通的,可能會被發現爬蟲,然后強制跳轉到其他的網頁頁面上。

這個時候,只能用上面的方法了。

如果有更好的方法,可以解決如上的問題的話,希望大家可以提出來呀,感謝不盡!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76817.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76817.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76817.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL GTID模式主從同步配置全指南:從配置到故障轉移

前言 MySQL主從復制是企業級數據庫架構的基礎,而GTID(Global Transaction Identifier)模式則是MySQL 5.6版本后推出的革命性復制技術。本文將詳細介紹如何配置基于GTID的主從同步,并包含實用的故障轉移操作指南。 一、GTID模式核心優勢 相比傳統基于…

MAC系統下完全卸載Android Studio

刪除以下文件 /Applications/Android Studio.app /Users/用戶名/Library/Application Support/Google/AndroidStudio2024.2 /Users/用戶名/Library/Google/AndroidStudio /Users/用戶名/Library/Preferences/com.google.android.studio.plist /Users/用戶名/Library/Cache…

<C#>.NET WebAPI 的 FromBody ,FromForm ,FromServices等詳細解釋

在 .NET 8 Web API 中,[FromBody]、[FromForm]、[FromHeader]、[FromKeyedServices]、[FromQuery]、[FromRoute] 和 [FromServices] 這些都是用于綁定控制器動作方法參數的特性,下面為你詳細解釋這些特性。 1. [FromBody] 作用:從 HTTP 請求…

# 透視 Linux 內核:Socket 機制的底層架構與運行邏輯深度解析

在由 Linux 操作系統構建的龐大網絡生態中,Socket 作為網絡通信的核心樞紐,承載著不同主機間應用進程的數據交互重任。無論是日常的網頁瀏覽、在線游戲,還是復雜的分布式系統通信,Socket 都在幕后扮演著關鍵角色。盡管多數開發者對…

# 利用遷移學習優化食物分類模型:基于ResNet18的實踐

利用遷移學習優化食物分類模型:基于ResNet18的實踐 在深度學習的眾多應用中,圖像分類一直是一個熱門且具有挑戰性的領域。隨著研究的深入,我們發現利用預訓練模型進行遷移學習是一種非常有效的策略,可以顯著提高模型的性能&#…

Excel提取圖片并自動上傳到文件服務器(OOS),獲取文件鏈接

Excel提取圖片并自動上傳到接口 在實際項目中,我們可能經常會遇到需要批量從Excel文件(.xlsx)中提取圖片并上傳到特定接口的場景。今天,我就詳細介紹一下如何使用Python實現這一功能,本文會手把手教你搭建一個完整的解…

jmeter利用csv進行參數化和自動斷言

1.測試數據 csv測試數據如下(以注冊接口為例) 2.jemer參數化csv設置 打開 jmeter,添加好線程組、HTTP信息頭管理器、CSV 數據文件設置、注冊請求、響應斷言、查看結果樹 1) CSV 數據文件設置 若 CSV 中數據包含中文,…

騰訊云對象存儲m3u8文件使用騰訊播放器播放

參考騰訊云官方文檔: 播放器 SDK Demo 體驗_騰訊云 重要的一步來了: 登錄騰訊云控制臺,找到對象存儲的存儲桶。 此時,再去刷新剛才創建的播放器html文件,即可看到播放畫面了。

CSS 美化頁面(五)

一、position屬性 屬性值??描述??應用場景?static默認定位方式,元素遵循文檔流正常排列,top/right/bottom/left 屬性無效?。普通文檔流布局,默認布局,無需特殊定位。relative相對定位,相對于元素原本位置進行偏…

Spring MVC 核心注解與文件上傳教程

一、RequestBody 注解詳解 1. 基本使用 作用:從 HTTP 請求體中獲取數據,適用于 POST/PUT 請求。 限制:GET 請求無請求體,不可使用該注解。 示例代碼 Controller RequestMapping("/demo01") public class Demo01Cont…

js原型鏈prototype解釋

function Person(){} var personnew Person() console.log(啊啊,Person instanceof Function);//true console.log(,Person.__proto__Function.prototype);//true console.log(,Person.prototype.__proto__ Object.prototype);//true console.log(,Function.prototype.__prot…

為您的照片提供本地 AI 視覺:使用 Llama Vision 和 ChromaDB 構建 AI 圖像標記器

有沒有花 20 分鐘瀏覽您的文件夾以找到心中的特定圖像或屏幕截圖?您并不孤單。 作為工作中的產品經理,我總是淹沒在競爭對手產品的屏幕截圖、UI 靈感以及白板會議或草圖的照片的海洋中。在我的個人生活中,我總是捕捉我在生活中遇到的事物&am…

Kafka消費者端重平衡流程

重平衡的完整流程需要消費者 端和協調者組件共同參與才能完成。我們先從消費者的視角來審視一下重平衡的流程。在消費者端,重平衡分為兩個步驟:分別是加入組和等待領導者消費者(Leader Consumer)分配方案。這兩個步驟分別對應兩類…

2025年五大ETL數據集成工具推薦

ETL工具作為打通數據孤島的核心引擎,直接影響著企業的決策效率與業務敏捷性。本文精選五款實戰型ETL解決方案,從零門檻的國產免費工具到國際大廠企業級平臺,助您找到最適合的數據集成利器。 一、谷云科技ETLCloud:國產數據集成工…

PageIndex:構建無需切塊向量化的 Agentic RAG

引言 你是否對長篇專業文檔的向量數據庫檢索準確性感到失望?傳統的基于向量的RAG系統依賴于語義相似性而非真正的相關性。但在檢索中,我們真正需要的是相關性——這需要推理能力。當處理需要領域專業知識和多步推理的專業文檔時,相似度搜索常…

ubuntu20.04 遠程桌面Xrdp方式

1,Ubuntu 安裝Xrdp 方法 1.1,安裝xrdp sudo apt install xrdp 1.2,檢查xrdp狀態 sudo systemctl status xrdp 1.3,加入ssl-cert sudo adduser xrdp ssl-cert 1.4,重啟xrdp服務 sudo systemctl restart xrdp 最后…

Java學習手冊:RESTful API 設計原則

一、RESTful API 概述 REST(Representational State Transfer)即表述性狀態轉移,是一種軟件架構風格,用于設計網絡應用程序。RESTful API 是符合 REST 原則的 Web API,通過使用 HTTP 協議和標準方法(GET、…

Spring Boot 核心注解全解:@SpringBootApplication背后的三劍客

大家好呀!👋 今天我們要聊一個超級重要的Spring Boot話題 - 那個神奇的主類注解SpringBootApplication!很多小伙伴可能每天都在用Spring Boot開發項目,但你真的了解這個注解背后的秘密嗎?🤔 別擔心&#x…

weibo_har鴻蒙微博分享,單例二次封裝,鴻蒙微博,微博登錄

weibo_har鴻蒙微博分享,單例二次封裝,鴻蒙微博 HarmonyOS 5.0.3 Beta2 SDK,原樣包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2) 🏆簡介 zyl/weibo_har是微博封裝使用,支持原生core使用 &a…

tomcat集成redis實現共享session

中間件&#xff1a;Tomcat、Redis、Nginx jar包要和tomcat相匹配 jar包&#xff1a;commons-pool2-2.2.jar、jedis-2.5.2.jar、tomcat-redis-session-manage-tomcat7.jar 配置Tomcat /conf/context.xml <?xml version1.0 encodingutf-8?> <!--Licensed to the A…