selenium測試工具用來模擬用戶瀏覽器的操作

執行JS的類庫:execjs,PyV8,selenium,node

pip list

pip install selenium

pip install xlrd

pip install xlwt

pip install PyExecJS

pip install xlutils

selenium測試工具可以用來模擬用戶瀏覽器的操作,其支持的瀏覽器有:PhantomJS,Firefox,Chrome等等,開發者可以根據當前的系統形式選擇不同的模擬瀏覽器
每種模擬瀏覽器都需要對應的瀏覽器驅動(一個以.exe為后綴的可執行文件),使用谷歌瀏覽器Chrome,對應的瀏覽器驅動可以通過下面的網址下載。要完整地安裝Python-Selenium庫,讓Chrome瀏覽器實現自動化,需要完成下面4步:Chromedriver安裝、Selenium庫安裝、測試、關閉Chrome瀏覽器自動更新。

ChromeDriver - WebDriver for Chrome - Downloads

如果您使用的是Chrome 115或更新版本,請參閱Chrome測試可用性儀表板。此頁面為特定的ChromeDriver版本下載提供了方便的JSON端點。

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 17 09:35:18 2020@author: Administrator
"""
import re
import urllib.request
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from xlrd import open_workbookimport csv
import codecsimport xlwt
import execjs
from xlrd import open_workbook
from xlutils.copy import copy
import requests
import timeimport six
import packaging
import packaging.version
import packaging.specifiers
import packaging.requirements#  將數據寫入新文件
def data_write(file_path, title, url,rownum):print(rownum)r_xls = open_workbook(file_path) # 讀取excel文件row = r_xls.sheets()[0].nrows # 獲取已有的行數excel = copy(r_xls) # 將xlrd的對象轉化為xlwt的對象table = excel.get_sheet(0) # 獲取要操作的sheet#對excel表追加一行內容table.write(row, 0, title) #括號內分別為行數、列數、內容table.write(row, 1, url)excel.save(file_path) # 保存并覆蓋文件rownum+=1if __name__ == '__main__': i = int(input("視頻起始頁:"))try:#正常的操作for index in range(1, 1000):url = 'https://video.e-works.net.cn/Video/VideoDetail.aspx?'url = url + "vid="+format(i)# 將路徑實例化為一個Service對象chrome_driver_path = 'C:\\Users\\admin\\Desktop\\chromedriver.exe'# 傳入webdriver驅動的新方法 Service()函數;以前的報警告,即將棄用chrome_driver_path_obj = Service(chrome_driver_path)browser = webdriver.Chrome(service=chrome_driver_path_obj)#browser = webdriver.Chrome(executable_path='chromedriver.exe')# 實例化一個啟動參數對象chrome_options = Options()# 設置瀏覽器窗口大小#chrome_options.add_argument('--window-size=1366,768')#無界面運行chrome_options.add_argument('--headless')prefs = {'profile.default_content_setting_values' : {'images' : 2,#禁用圖片加載'notifications' : 2, #禁用瀏覽器彈窗}}#chrome_options.add_experimental_option('prefs',prefs) # avoid detection riskschrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])# 啟動瀏覽器browser = webdriver.Chrome(options=chrome_options)browser.get(url)#print(browser.page_source)#執行js得到整個HTMLhtml_content = browser.execute_script("return document.documentElement.outerHTML")title=[]videoUrl=[]# 正則表達式匹配標題pat = r'<title>(.*?)</title>'#返回的是一個列表提 [0]取出來title = re.findall(pat,html_content)# 無id,無name,先定位iframe元素iframe = browser.find_elements_by_tag_name("iframe")if(iframe):print("iframe")#print(browser.find_elements_by_tag_name("iframe")[0].get_attribute("src"))videoUrl=browser.find_elements_by_tag_name("iframe")[0].get_attribute("src")#print("".join(videoUrl))else:reg = '<video.*?src="(.*?)"></video>'#返回的是一個列表提 [0]取出來videoUrl = re.findall(reg,html_content,re.S)#把爬取的內容保存到文件中if (len(title))and(len(videoUrl)):# 存在值即為真#print(title)#打印視頻鏈接#print(videoUrl)data_write('data.xls',title[0],videoUrl,index)print(format(i))i+=1else:# 頁面為空print(format(index)+" is none!")i+=1#video_links=videoUrl[0]#download_video_series(video_links)browser.quit()except Exception as e:# 發生異常,執行這塊代碼 訪問異常的錯誤編號和詳細信息print(e.args)print("異常拋出!")else:#如果沒有異常執行這塊代碼print("執行完畢!")

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

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

相關文章

能當老板的AI大模型多智體框架MetaGPT自動完成項目

能當老板的AI大模型多智體框架MetaGPT自動完成項目。 MetaGPT是一個創新的多智能體框架&#xff0c;它結合了大語言模型&#xff08;LLM&#xff09;和多智能體協作系統&#xff0c;旨在通過模擬人類工作流程來解決復雜問題。這個框架的核心在于將標準化操作程序&#xff08;SO…

Redis學習路徑(構建體系)

學習路徑 掌握數據類型&#xff08;分析底層數據結構&#xff09;和緩存的基本使用 (理論使用) 掌握 redis 實現高性能&#xff0c;高可靠、高可用技術 &#xff08;理論&#xff09;學習redis源代碼底層實現 (底層實現) 先來一個引言&#xff0c;比較宏觀的角度&#xf…

Linux常用操作命令

Linux作為一種廣泛應用的操作系統&#xff0c;其強大的命令行工具使得用戶能夠高效地管理文件、處理數據和監控系統。在本文中&#xff0c;我們將深入 探討一些常用的Linux操作命令及其用法。 ls&#xff1a;列出當前目錄下的文件和子目錄。 ls [選項] [文件或目錄]常用選項&am…

Python實現MACD工具判斷信號:股票技術分析的工具系列(1)

Python實現MACD工具判斷信號&#xff1a;股票技術分析的工具系列&#xff08;1&#xff09; 介紹代碼rolling函數介紹核心代碼計算指數移動平均值計算MACD指標 完整代碼 介紹 先看看官方介紹&#xff1a; MACD (平滑異同平均線&#xff09; 指標說明 DIF線&#xff1a;收盤價短…

#單片機(TB6600驅動42步進電機)

1.IDE:keil 2.設備:保密 3.實驗&#xff1a;使用單片機通過普通IO口控制TB6600驅動42步進電機 4.時序圖&#xff1a; TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能電機&#xff08;直接懸空不接&#xff09;方向脈沖輸入&#xff08;普通IO口模擬即可&#xff…

Linux系統編程7--線程 寫個測試腳本

Linux系統編程7–線程_寫個測試腳本 參考博客&#xff1a; Linux多線程編程初探 - 峰子_仰望陽光 - 博客園 (cnblogs.com) 我的PC是8核*16進程&#xff0c;所以在固定的時間點&#xff0c;我可以同時運行8 * 16的進程&#xff0c;更多的線程&#xff08;任務管理器&#xff09;…

【學習筆記】Diffusion擴散模型

導讀 Diffusion models是現在人工智能領域最火的方向之一&#xff0c;并引爆了AIGC領域&#xff0c;一大批創業公司隨之誕生。 AIGC&#xff08;AI-Generated Content&#xff09;&#xff1a;人工智能創作內容的生產方式。 擴散模型Diffusion 擴散模型Duffison的訓練過程 …

等概率事件算法

1等概率的生成(0-8)范圍內的正整數 // Math.random 數據范圍[0,1) 且 是 等概率的產生隨機數 // 應用&#xff1a; // 1.生成等概率的整數&#xff08;等概率的生成(0-8)范圍內的正整數 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞實現高效鍵盤掃描功能(STM32F4XX)

目錄 概述 1 原理分析 1.1 技術背景 1.2 系統硬件 1.3 STM32 IO&#xff08;輸入模式&#xff09;寄存器分析 1.3.1 輸入IO的功能描述 1.3.2 輸入配置 1.3.3 GPIO 寄存器&#xff08;輸入模式相關&#xff09; 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid動態數據源切換

關鍵字&#xff1a;springboot&#xff0c;druid數據庫連接池&#xff0c;兩個數據源&#xff08;可以切換成多個&#xff09;&#xff0c;事務管理 關于druid簡介傳送門&#xff1a;https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具體分為四…

Doris【數據模型】

一、數據模型簡介 在 Doris 中&#xff0c;數據以表&#xff08;Table&#xff09;的形式進行邏輯上的描述。 一張表包括行&#xff08;Row&#xff09;和列&#xff08;Column&#xff09;。Row 即用戶的一行數據。Column 用于描述一行數據中不同的字段。 Column 可以分為兩…

autoware.universe中跟蹤模塊詳解,一看就懂!

目錄 問題:閱讀關鍵點:總結問題: 根據對預測模塊代碼的分析,發現預測框出現在點云前方的原因在于跟蹤框出現在點云前方 對rviz上的目標進行觀察后發現 車輛的檢測框先出來一段時間后,跟蹤框和預測框同步一塊出來 跟蹤框總是超出點云一部分 閱讀關鍵點: 每個跟蹤器最少要統計…

7.1.2 Selenium的用法1

目錄 1. 初始化瀏覽器對象和訪問頁面 2. 查找節點及節點交互 2.1 查找單個節點 &#xff08;1&#xff09;獲取方法1——特定方法 &#xff08;2&#xff09;通用方法 2.2 查找多個節點 2.3 節點交互 3. 動作鏈 4. 執行 JavaScript 之下拉進度條 5. 獲取節點信息 5.…

谷歌seo推廣秒收錄怎么做?

谷歌SEO推廣秒收錄想要做到&#xff0c;可以利用我們光算科技獨家技術&#xff0c;GSI快速收錄&#xff0c;通過技術手段和操作&#xff0c;幫你的網站快速被谷歌發現和記錄 這項技術具體核心就是GPC爬蟲池系統&#xff0c;這個系統是專門研究谷歌搜索引擎優化的規律和算法創造…

【QT】QTableView或QTableWidget 搭配QLineEdit實現數據的搜索顯示

在 Qt 中&#xff0c;QTableView 和 QTableWidget 都可以用來實現數據的搜索和顯示&#xff0c;但它們的適用場景和實現方式有所不同&#xff1a; QTableView 適用場景&#xff1a;QTableView 適用于更復雜的場景&#xff0c;尤其是當需要處理大量數據或需要高度定制化的表格時…

66-ES6:var,let,const,函數的聲明方式,函數參數,剩余函數,延展操作符,嚴格模式

1.JavaScript語言的執行流程 編譯階段&#xff1a;構建執行函數&#xff1b;執行階段&#xff1a;代碼依次執行 2.代碼塊&#xff1a;{ } 3.變量聲明方式var 有聲明提升&#xff0c;允許重復聲明&#xff0c;聲明函數級作用域 訪問&#xff1a;聲明后訪問都是正常的&…

拿下邊界機器進行內網滲透的方案

拿下機器后&#xff0c;使用代理訪問內網 windows環境&#xff1a;reGeorg與proxifier Linux環境&#xff1a;reGeorg與proxychains&#xff0c; 使用nmap等工具進行掃描&#xff0c;發現web服務的主機和其它信息。有時這些邊界機器上會記錄一些 內網服務器上的一些信息&…

QT C++實現點擊按鍵彈出窗口并顯示圖片/視頻|多窗口應用程序的設計和開發

一、介紹 首先&#xff0c;QT界面開發中主要大體分為2種多窗口的形式&#xff1a; 嵌入式&#xff1a; 新生成的窗口嵌入在主窗口內部獨立窗口&#xff1a; 以彈窗形式的新窗口生成和展示 這里就講解最簡單的&#xff1a;點擊案件后&#xff0c;跳出一個新窗口 二、代碼實…

利用FFMPEG 將RTSP流的音頻G711 轉碼為AAC 并 推流到RTMP

之前我們的視頻轉碼項目中 是沒有加入音頻的 現在 需要加入音頻 &#xff0c;由于RTMP只支持AAC的 音頻流 而有的RTSP流的音頻編碼并不是AAC 大多數都是G711編碼 還分為G711A 和G711U 之前用ffmpeg命令行可以直接 完成轉碼 并推送到RTMP 但是考慮到無法獲取更詳細的狀…

Qt篇——QTableWidget保存表格數據到Excel文件中,讀Excel內容到QTableWidget

表格和excel例子如下圖所示&#xff1a; 一、QTableWidget保存表格數據到Excel文件中 代碼如下&#xff1a; &#xff08;pro文件中添加QT axcontainer&#xff09; #include <QAxObject>void MainWindow::saveTableToExcel() {QDateTime current_date_time QDateTi…