python爬蟲(三)----Selenium

目錄

1.?Selenium

1.1?Selenium是啥

1.2 安裝chrom Driver

1.3 selenium 使用

1.4 selenium元素定位

1.5 訪問元素信息

1.6 交互

2. Phantomjs、Chrom handless


1.?Selenium

1.1?Selenium是啥

自動化Web瀏覽器操作

主要用于Web應用程序的測試

支持多操作系統、多瀏覽器(dirver)

支持無界面瀏覽器操作(自動交互)

1.2 安裝chrome Driver

chrome deriver下載

需要注意? driver 與 chrom版本對應

1.3 selenium 使用


# (1)導入selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service# (2) 創建瀏覽器操作對象
path = 'chromedriver.exe'
# 創建 Service 對象
service = Service(executable_path=path)
# 創建 WebDriver 對象
browser = webdriver.Chrome(service=service)# (3)訪問網站
url = 'https://www.jd.com/'
browser.get(url)
# page_source獲取網頁源碼
content = browser.page_source
print(content)

1.4 selenium元素定位

selenium3和selenium4的語法有一定不同

button = browser.find_element(By.ID, 'chat-submit-button')
button2 = browser.find_elements(By.ID, 'chat-submit-button')

ID = "id"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

button = browser.find_element(By.ID, 'chat-submit-button')button2 = browser.find_element(By.NAME, 'wd')button3 = browser.find_elements(By.TAG_NAME, 'input')button4 = driver.find_element(By.CLASS_NAME, "btn-primary")button5 = browser.find_element(By.LINK_TEXT, '直播')button6 = browser.find_element(By.PARTIAL_LINK_TEXT, '直')button7 = browser.find_elements(By.XPATH, '//button[@id="chat-submit-button"]')button8 = browser.find_element(By.CSS_SELECTOR, '#chat-submit-button')print(button)

1.5 訪問元素信息

獲取元素屬性
?? ?.get_attribute('class')
獲取元素文本
?? ?.text
獲取標簽名
?? ?.tag_name

input = browser.find_element(By.ID, 'chat-textarea')
# 獲取標簽的屬性
print(input.get_attribute('class'))
# 獲取標簽的名字
print(input.tag_name)
# 獲取元素文本
a = browser.find_element(By.LINK_TEXT,'新聞')
print(a.text)

1.6 交互

點擊:click()
輸入:send_keys()
后退操作:browser.back()
前進操作:browser.forword()
模擬JS滾動:
?? ?js='document.documentElement.scrollTop=100000'
?? ?browser.execute_script(js) 執行js代碼
獲取網頁代碼:page_source
退出:browser.quit()

2. Phantomjs、Chrome handless

無界面瀏覽器。不進行css渲染,運行效率高。

Phantomjs基本被淘汰,建議使用Chrom handless

from selenium import webdriver
from selenium.webdriver.chrome.service import Servicedef share_browser():# 替換為你的 chromedriver 路徑path = 'chromedriver.exe'  # Windows 示例,如 chromedriver.exeservice = Service(executable_path=path)options = webdriver.ChromeOptions()options.add_argument('--headless')  # 無頭模式options.add_argument('--disable-gpu')options.add_argument('--no-sandbox')# 創建瀏覽器實例browser = webdriver.Chrome(service=service, options=options)return browserbrowser = share_browser()url = 'https://www.baidu.com'browser.get(url)
browser.save_screenshot('baidu22.png')

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

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

相關文章

《事務隔離級別與 MVCC 機制深度剖析》

🔍 事務隔離級別與 MVCC 機制深度剖析 🧠 前言 在高并發場景下,數據庫事務是保證數據一致性的基石。但在 MySQL InnoDB 中,事務的隔離級別、鎖策略、MVCC(多版本并發控制)之間的配合,常常是面…

20250814,通義萬相,無限生成權限(慢速)

今天看小紅書,發現通義萬相可以免費生成慢速圖片。研究一下每天10分用完后,按鈕就變成0,但是可以點擊這個0,進入排隊慢速生成狀態。原來通義萬相的收費主要是用來提速的(快速出圖),不著急的話也…

Salesforce方案:醫療行業“患者隨訪與健康管理”

醫療行業“患者隨訪與健康管理”的Salesforce方案設計 一、業務需求核心解析 醫療行業患者隨訪與健康管理需實現三大目標: 全周期健康記錄:整合患者基本信息、病史、診療記錄及檢查結果,形成完整健康檔案個性化隨訪計劃:基于病種和…

vscode使用keil5出現變量跳轉不了

vscode使用keil5出現變量跳轉不了,或者未包含文件,或者未全局檢索; 參考如下文章后還會出現; 為什么vscode搜索欄只搜索已經打開的文件_vscode全局搜索只能搜當前文件-CSDN博客 在機緣巧合之下發現如下解決方式: 下載…

如何查看SQL Server的當前端口

想知道SQL Server用的是哪個端口? 很簡單,通過注冊表就能查到。第一步:打開注冊表按下 Win R,輸入:regedit回車,打開注冊表編輯器。第二步:找到路徑HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSS…

常見的Jmeter壓測問題

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快根據在之前的壓測過程碰到的問題,今天稍微總結總結,以后方便自己查找。一、單臺Mac進行壓測時候,壓測客戶端Jmeter啟動超過2000個…

第二十三天:求逆序對

每日一道C題&#xff1a; 問題&#xff1a;給定一個序列a1,a2,…,an&#xff0c;如果存在i<j并且ai>aj&#xff0c;那么我們稱之為逆序對&#xff0c;求逆序對的數目。 要求&#xff1a;輸入第一行為n,表示序列長度&#xff0c;接下來的n行&#xff0c;第i1行表示序列中的…

Java—CompletableFuture 詳解

參考&#xff1a; CompletableFuture原理與實踐-外賣商家端API的異步化 - 美團技術團隊 CompletableFuture 詳解 | JavaGuide 1.CompletableFuture介紹 CompletableFuture是由Java 8引入的&#xff0c;在Java8之前我們一般通過Future實現異步。 Future用于表示異步計算的結…

大模型部署基礎設施搭建 - 向量數據庫milvus

一、docker方式安裝參考官網&#xff1a;https://milvus.io/docs/zh/install_standalone-docker.md#Install-Milvus-in-Docker1.1 安裝 curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.shbash standal…

(25.08)Ubuntu20.04復現KISS-ICP

主頁&#xff1a;https://github.com/PRBonn/kiss-icp?tabreadme-ov-file 倉庫&#xff1a;https://github.com/PRBonn/kiss-icp.git 非 ROS 使用流程 1. 克隆倉庫 git clone https://github.com/PRBonn/kiss-icp.git cd kiss-icp 2. 使用 micromamba 創建 Python 虛擬環…

linux 軟硬鏈接詳解

一、核心區別總覽特性硬鏈接&#xff08;Hard Link&#xff09;軟鏈接&#xff08;Symbolic Link&#xff09;本質直接指向文件的 inode&#xff08;數據塊的入口地址&#xff09;指向文件的 路徑名&#xff08;相當于快捷方式&#xff09;跨文件系統支持? 僅限同一文件系統?…

基于SpringBoot+Vue的房屋匹配系統(WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析)

&#x1f388;系統亮點&#xff1a;WebSocket實時通訊、協同過濾算法、地圖API、Echarts圖形化分析&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具后端使用Java編程語言的Spring boot框架 項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&…

第2節:多模態的核心問題(多模態大模型基礎教程)

前言 本節課我們聚焦多模態大模型最核心的問題&#xff1a;文本、圖像、語音這些“不同語言”的信息&#xff0c;是怎么被模型“翻譯”并互相理解的&#xff1f;我們從“差異”入手&#xff0c;一步步搞懂其中的邏輯。 一、先搞懂&#xff1a;什么是“模態差異”&#xff1f; 生…

Java stream distinct findAny anyMatch實現 :DistinctOp、FindOp、MatchOp

DistinctOpsDistinctOps 是一個專門用于實現 Stream.distinct() 操作的工廠類。正如它的名字所示&#xff0c;它的核心職責就是創建能夠去除流中重復元素的操作。distinct() 是一個有狀態的中間操作 (stateful intermediate operation)&#xff0c;這意味著它通常需要看到所有元…

鎖的基本介紹

鎖 并發編程的一個最基本問題就是原子性地執行一系列指令。鎖有助于直接解決這一問題。 鎖的基本思想 鎖就是一個變量。這個變量保存了鎖在某一時刻的狀態。它要么是可用的&#xff0c;表示沒有線程持有鎖&#xff0c;要么是被占用的&#xff0c;表示有線程持有鎖&#xff0c;正…

【讀代碼】開源流式語音編碼器SecoustiCodec

引言:從LLM到深度語義 在大型語言模型(LLM)驅動的語音交互時代,神經語音編解碼器 (Neural Speech Codec) 扮演著至關重要的角色。它如同 LLM 的“耳朵”和“嘴巴”,負責將連續的語音波形轉換為離散的、可供模型處理的 token,并將模型生成的 token 還原為自然的人聲。 一…

P5967 [POI 2016] Korale 題解

P5967 [POI 2016] Korale 題目描述 有 nnn 個帶標號的珠子&#xff0c;第 iii 個珠子的價值為 aia_iai?。 現在你可以選擇若干個珠子組成項鏈&#xff08;也可以一個都不選&#xff09;&#xff0c;項鏈的價值為所有珠子的價值和。 給出所有可能的項鏈排序&#xff0c;先按…

SwiftUI 頁面彈窗操作

SwiftUI 頁面彈窗操作指南一、基礎彈窗實現1. Alert 基礎警告框2. ActionSheet 操作菜單3. Sheet 模態視圖4. Popover 浮動視圖二、高級自定義彈窗1. 自定義彈窗組件2. 使用自定義彈窗三、彈窗狀態管理1. 使用環境對象管理彈窗2. 彈窗路由系統四、動畫與過渡效果1. 自定義彈窗動…

OpenCV圖像處理2:邊界填充與平滑濾波實戰

前面學了一些關于opencv圖像處理的內容&#xff0c;現在繼續。一 圖像填充邊界填充&#xff08;Border Padding&#xff09;?&#xff0c;即在圖像四周添加指定寬度的像素區域。其核心函數是cv2.copyMakeBorder()&#xff0c;通過不同的填充方式&#xff08;borderType&#x…

imx6ull-驅動開發篇22——Linux 時間管理和內核定時器

目錄 內核時間管理 系統節拍率 高/低節拍率的優缺點 jiffies 節拍數 時間繞回 時間轉換函數 內核定時器 timer_list 結構體 定時器API函數 init_timer 函數 add_timer 函數 del_timer 函數 del_timer_sync 函數 mod_timer 函數 Linux 內核短延時函數 內核時間管…