第十六天-爬蟲selenium庫

目錄

1.介紹

2.使用?selenium

1.安裝

2.使用

1.測試打開網頁,抓取雷速體育日職乙信息

2.通過xpath查找

3.輸入文本框內容?send_keys

4.點擊事件?click

5.獲取網頁源碼:

6.獲取cookies

7.seleniumt提供元素定位方式:8種

8.控制瀏覽器前進、后退、刷新

9.控制鼠標

10. 設置等待

11設置后臺運行

12.后臺終止

3.實戰


1.介紹

1. selenium是一個用于web應用程序自動化測試工具,Selenium測試直接運行在瀏覽器中;

2.像真正的用戶在操作一樣2,驅動瀏覽執行特定的動作,如點擊、下來等操作;

3.selenium支持瀏覽器

4.支持的語言

5.selenium在爬蟲的應用

2.使用?selenium

1.安裝

?pip3 install selenium

2.使用

1.測試打開網頁,抓取雷速體育日職乙信息

# coding:utf-8import time
from selenium import webdriver
from selenium.webdriver.common.by import By# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 爬取日職乙聯賽信息
webdriver_chrome.get("https://www.leisu.com/data/zuqiu/comp-568/season-11286")
# 默認頁面是升級附加賽:提取主隊信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):print("升級附加賽:主隊信息:", home.text)
# 點擊聯賽
webdriver_chrome.find_element(By., "//div[@class='stage_name']").click()
# 獲取聯賽信息
for home in webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a"):print("聯賽:主隊信息:", home.text)# 獲取標題
print("標題:", webdriver_chrome.title)
print("獲取cookie", webdriver_chrome.get_cookies())
print("獲取頁面源碼", webdriver_chrome.page_source())# 打開5秒關閉
time.sleep(5)# 關閉瀏覽器
webdriver_chrome.quit()

2.通過xpath查找

?webdriver_chrome.find_elements(By.XPATH, "//td[@class='home']/a")

3.輸入文本框內容?send_keys

?webdriver_chrome.find_element(By.XPATH,"//input[@id='']").send_keys("內容")

4.點擊事件?click

webdriver_chrome.find_element(By.XPATH,"//input[@id='']").click()

5.獲取網頁源碼:

webdriver_chrome.page_source()

6.獲取cookies

webdriver_chrome.get_cookies()

7.seleniumt提供元素定位方式:8種

老版本使用

新版使用

find_elements(By.XPATH, "原始值")

find_elements(By.ID, "原始值")

find_elements(By.CLASS_NAME, "原始值")

等等

8.控制瀏覽器前進、后退、刷新

9.控制鼠標

import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")
#鼠標移動到設置上
#定位設置
set_element_above=webdriver_chrome.find_element(By.ID,"s-usersetting-top")
print(set_element_above.text)
#移動鼠標到設置上
ActionChains(webdriver_chrome).move_to_element(set_element_above).perform()time.sleep(5)
webdriver_chrome.quit()

10. 設置等待

1. 使用場景:有時候需要等某些元素加載后進行操作,或者網絡原因需要加載;

2.等待分為2種方式,分為顯式等待和隱式等待

3.顯式等待代碼:打開百度,輸入內容

import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")
# WebDriverWait:顯示等待
# 參數:1.webdriver_chrome打開瀏覽器對象,2.timeout,3.輪訓參數
# until:EC場景判斷,通過id找到輸入框
element = WebDriverWait(webdriver_chrome, 5, 0.5).until(EC.presence_of_element_located((By.ID, "kw")))
# 找到元素輸入查找內容
element.send_keys("Python")time.sleep(5)
webdriver_chrome.quit()

4.隱式等待代碼:打開百度,輸入內容

import timefrom selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import  NoSuchElementException# 打開瀏覽器
webdriver_chrome = webdriver.Chrome()
# 瀏覽器窗口最大化:
webdriver_chrome.maximize_window()
#隱式等待
webdriver_chrome.implicitly_wait(5)
# 打開百度
webdriver_chrome.get("https://www.baidu.com/")try:webdriver_chrome.find_element(By.ID,"kw1").send_keys("python")
except NoSuchElementException as e:print("超時沒有找到元素:",e)time.sleep(5)
webdriver_chrome.quit()

11設置后臺運行

from selenium.webdriver.chrome.options import Options
options = {"headless": "--headless","no_sandbox": "--no-sandbox","gpu": "--disable-gpu"
}
chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)

12.后臺終止

1.如運行異常可使用任務管理器,找到進程“chromediver.exe”結束進程

3.實戰

1. 自動爬取比賽信息

2.自動翻頁頁

3.導出到excel中

待完成...

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

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

相關文章

Spring Security OAuth2如何自定義返回的 Token 信息

文章目錄 Spring Security OAuth2如何自定義返回的 Token 信息定制不透明令牌的信息Springsecurity-oauth2之TokenEndPoint參考Spring Security OAuth2如何自定義返回的 Token 信息 Spring Boot+OAuth2,如何自定義返回的 Token 信息? 參考URL: https://www.jianshu.com/p/b7…

【Go】指針的聲明和初始化

package mainimport "fmt"func main() {// 聲明一個整數變量var num int 42// 聲明一個指向整數的指針變量,并將其初始化為指向整數變量的地址var ptr *int &num// 打印整數變量的值和指針變量的值(即整數變量的地址)fmt.Pri…

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館

2024第24屆中國國際工業博覽會新能源與智能網聯汽車展電池制造展館 時間:2024年9月24日-28日 地點:國家會展中心(上海) 主辦單位:工業和信息化部、國家發展和改革委員會、科學技術部、商務部、中國科學院、中國工程…

【游記】GDOI2024

GDOI2024游記 老年退役選手。NOIP 218 分,GDOI 純純旅游。 Day -5 周日返校,開始停課。 開始攢 rp。 Day -4 模擬賽,犯困,啥也不會。 下午打球。 Day -3 模擬賽,不困,還是啥也不會。 下午打球。 …

CSS3單獨制作移動端頁面布局方式(流式布局、flex彈性布局)

目錄 1. 流式布局(百分比布局)2. flex彈性布局(強烈推薦)2.1 介紹2.2 Flex容器常見屬性2.2.1 flex-direction2.2.2 justify-content2.2.3 flex-wrap2.2.4 align-items2.2.5 align-content2.2.6 flex-flow 2.3 Flex項目常見屬性2.3.1 flex2.3.2 align-self和order 1. 流式布局(百…

銀河麒麟之Workstation安裝

一、VMware Workstation簡介 VMware Workstation是一款由VMware公司開發的虛擬化軟件,它允許用戶在一臺物理計算機上運行多個操作系統,并在每個操作系統中運行多個虛擬機。VMware Workstation提供了一個可視化的用戶界面,使用戶可以輕松創建、…

程序環境和預處理(2)

文章目錄 3.2.7 命名約定 3.3 #undef3.4 命令行定義3.5 條件編譯3.6 文件包含3.6.1 頭文件被包含的方式3.6.2 嵌套文件包含 4. 其他預處理指令 3.2.7 命名約定 一般來講函數和宏的使用語法很相似,所以語言本身沒法幫我們區分二者,那我們平時的一個習慣是…

linux條件判斷之if-then

if..then是最常見的條件判斷語句,簡而言之,就是當符合某個條件判斷的時候,就予以進行某項工作。 1.if-then格式 if-then格式1: if [ 條件判斷表達式 ];then 當條件判斷表達式成立時,需執行的命令 fi if-then格式2…

Redis安全加固策略:綁定Redis監聽的IP地址 修改默認端口 禁用或者重命名高危命令

Redis安全加固策略:綁定Redis監聽的IP地址 & 修改默認端口 & 禁用或者重命名高危命令 1.1 綁定Redis監聽的IP地址1.2 修改默認端口1.3 禁用或者重命名高危命令1.4 附:redis配置文件詳解(來源于網絡) 💖The Beg…

驅動開發面試復習

創建字符設備 1 創建設備號 alloc_chrdev_region 2.創建cdev cdev_init 3.添加一個 cdev,完成字符設備注冊到內核 cdev_add 4.創建類 class_create 5.創建設備 device_create 1.內核空間與用戶空間數據 copy_from_user 和copy_to_user 倆個函數來完成。 copy_from_user 函數…

618快遞準點到達,別忘了感謝它!

進入6月以來,全國快遞日均業務量飛速上漲。 雖然618大促是電商的主場,但作為不可或缺的物流環節,為了這場年中大考,快遞企業在此期間也使盡渾身解數,競相比拼配送速度。那么,為了更快的時效,快遞…

uniapp 的video播放如何實現小窗功能

在頁面中使用<video>組件來展示視頻&#xff0c;并設置好相應的屬性和事件監聽&#xff1a; <video src"video.mp4" play"onVideoPlay" pause"onVideoPause"></video>在頁面的data中定義一個變量來表示是否開啟小窗模式&#…

【Wio Terminal】使用WiFi(3)- Wi-F的高級使用

使用WiFi&#xff08;3&#xff09; Wi-F的高級使用HTTPClient 的使用HTTP GETHTTPs GETHTTP POSTWebServerHTTP Authentication Web ServerDNSServermDNSmDNS-SDWiFiManager Wi-F的高級使用 本節介紹了一些WiFi的高級庫用法&#xff0c;如HTTPClient、DNSServer和WebServer庫…

美國亞利桑那州立大學宣布與OpenAI建立合作伙伴關系!

美國亞利桑那州立大學 (Arizona State University) 在官網宣布—— 將與OpenAI建立合作伙伴關系&#xff01; 該校也成為了第一個與OpenAI合作的高等教育機構。 來源&#xff1a;亞利桑那州立大學官網 亞利桑那州立大學校長表示&#xff1a; “我們認識到人工智能系統將持續…

高并發IO底層原理淺析(四)

Java NIO中的Selector&#xff08;選擇器&#xff09;是一個用于檢測多個非阻塞通道&#xff08;Channel&#xff09;是否準備就緒進行讀寫操作的關鍵組件&#xff0c;它實現了I/O多路復用技術。在單個線程中&#xff0c;Selector可以監聽和管理多個Channel上的事件&#xff0c…

Redis安全加固策略:配置文件權限設置 配置本地日志存儲目錄 連接超時時間限制

Redis安全加固策略&#xff1a;配置文件權限設置 & 配置本地日志存儲目錄 & 連接超時時間限制 1.1 配置文件權限設置1.2 配置本地日志存儲目錄1.3 連接超時時間限制 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; 1.1 配置文件權限…

如何理解template<size_t N>?

template<size_t N> 是C中的模板參數&#xff0c;用于定一個非類型參數的值。它可以在編譯時確定&#xff0c;并且可以在編譯時進行計算和使用。 例如&#xff0c;我們可以定義一個模板函數&#xff0c;接受一個大小為N的數組作為參數&#xff1a; template<size_t …

Qt/事件分發器/事件過濾器

事件分發器 //事件分發器bool event(QEvent* e); //事件分發器&#xff1a;&#xff1a;用途 分發事件 bool MyLabel::event(QEvent* e) {if(e->type() QEvent::MouseButtonPress){//如果是鼠標摁下 攔截事件 不向下分發QMouseEvent* ev static_cast<QMouseEvent*>…

Qt-Qss 樣式表屬性大全

目錄 前言 源碼文件信息 QSS屬性大全 1.控件常用的屬性 2.控件常用屬性值 3.控件常用狀態 4.其他 前言 相信很大一部分開發者真的被Qt樣式表的屬性搞挺頭痛的&#xff01; 一方面Qss的示例Demo太過簡單&#xff0c; 另一方面&#xff0c;Qss的所有屬性在Qt的官方文…

軟考高級:逆向工程相關概念和例題

作者&#xff1a;明明如月學長&#xff0c; CSDN 博客專家&#xff0c;大廠高級 Java 工程師&#xff0c;《性能優化方法論》作者、《解鎖大廠思維&#xff1a;剖析《阿里巴巴Java開發手冊》》、《再學經典&#xff1a;《Effective Java》獨家解析》專欄作者。 熱門文章推薦&am…