取消
顯示的結果
而不是尋找
你的意思是:

硒鉻司機磚磚社區的司機,我看到重複的問題關於硒安裝在磚……

Hubert_Dudek1
尊敬的貢獻者三世

硒鉻磚司機司機

磚的社區,我看到重複的問題關於硒磚上安裝驅動程序。在磚上安裝硒可以令人吃驚,但例如,有時我們需要獲取一些數據集的背後認證,和硒是最方便的工具。當然,永遠記得先檢查最簡單的選擇。舉個例子,如果我們需要下載一個HTML文件,我們可以使用SparkContext.addFile()或隻使用圖書館的請求。如果我們需要解析HTML沒有模擬用戶操作複雜或下載頁麵,我們可以用BeautifulSoap。請記住,硒是運行在司機隻有(工人們不使用),所以就硒是單節點集群是首選。

安裝

最簡單的解決方案是使用apt-get安裝ubuntu軟件包,但往往版本的ubuntu回購已經過時了。最近解決方案停止為我工作,我決定采取一種不同的方法,從chromium-browser-snapshots司機和二進製文件https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html下麵的腳本下載最新版本的瀏覽器二進製文件和驅動程序。一切都保存到/ tmp /鉻目錄。我們還必須設置鉻主目錄/ tmp /鉻/ chrome-user-data-dir。有時,鉻抱怨缺少庫。這就是為什麼我們還安裝libgbm-dev。下麵的腳本將創建一個bash文件實施提到的步驟。

dbutils.fs.mkdirs (“dbfs: /磚/腳本/”)dbutils.fs.put(“/磚/腳本/ selenium-install。sh”、“”“# !/bin/bash % sh LAST_VERSION = " https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2FLAST_CHANGE?alt =媒體”版本= $ (curl - s - s LAST_VERSION美元)如果[- d $版本);然後回聲”版本已經安裝了“退出fi rm射頻/ tmp /鉻/ $版本mkdir - p / tmp /鉻/ $ URL = " https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F版本% 2 fchrome-linux.zip美元?alt =媒體" ZIP = " $ {VERSION} -chrome-linux。郵政“旋度- # $ URL > / tmp /鉻/ $ zip解壓/ tmp /鉻/ zip - d / tmp /鉻/美元版本URL = " https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F版本% 2 fchromedriver_linux64.zip美元?alt =媒體" ZIP = " $ {VERSION} -chromedriver_linux64。郵政“旋度- # $ URL > / tmp /鉻/ $ zip解壓/ tmp /鉻/ zip - d / tmp /鉻/美元版本mkdir - p / tmp /鉻/ chrome-user-data-dir rm - f / tmp /鉻/最新ln - s / tmp /鉻/版本/ tmp /鉻/美元最新#避免錯誤關於失蹤庫sudo apt-get更新sudo apt-get安裝- y libgbm-dev”“”,真的)顯示(dbutils.fs.ls (dbfs: /磚/腳本/))

腳本被保存到DBFS存儲/ DBFS /磚/腳本/ selenium-install。上海我們可以把它作為服務器的init腳本。單擊您的集群在“計算”- >點擊“編輯”- >“配置”選項卡- >向下滾動到“高級選項”- >點擊“Init腳本”- >選擇“DBFS”和“Init腳本路徑”設置為“/ / selenium-install DBFS /磚/腳本。sh”- >點擊“添加”。

初始化如果你還沒有設置init腳本,請運行以下命令。

% / selenium-install.sh sh / dbfs /磚/腳本

現在我們可以安裝硒。單擊您的集群在“計算”- >點擊“庫”- >點擊“安裝新”- >點擊“PyPI”- >“包”設置為“硒”- >點擊“安裝”。

install_library或者(不太方便),您可以安裝它每次在你的筆記本上運行以下命令。

% pip安裝硒

所以讓我們開始webdriver。我們可以看到,服務和binary_location指向驅動程序和二進製文件,由我們的腳本下載並打開。

從硒從selenium.webdriver.chrome進口webdriver。服務導入服務s =服務(“/ tmp /鉻/最近/ chromedriver_linux64 / chromedriver”)選項= webdriver.ChromeOptions()選項。binary_location = " / tmp /鉻/最近/ chrome-linux /鉻”options.add_argument(“無頭”)options.add_argument (——disable-infobars) options.add_argument (——disable-dev-shm-usage) options.add_argument (——no-sandbox) options.add_argument (——remote-debugging-port = 9222) options.add_argument ('——homedir = / tmp /鉻/ chrome-user-data-dir’) options.add_argument ('——user-data-dir = / tmp /鉻/ chrome-user-data-dir’)首選項= {“download.default_directory”:“/ tmp /鉻/ chrome-user-data-di”、“下載。prompt_for_download”:假}options.add_experimental_option(“首選項”,控製台)司機= webdriver。Chrome(服務= s選項=選項)

讓我們測試webdriver。我們將最後一個帖子的社區,將它們轉換為dataframe磚。

從selenium.webdriver.support selenium.webdriver.common.by進口的。ui從selenium.webdriver進口WebDriverWait。支持導入expected_conditions EC司機。執行(“獲得”,{“url”:“https://community.www.eheci.com/s/discussions?page=1&filter=All”}) = (elem日期。文本的elem WebDriverWait(司機,20)除非(EC.visibility_of_all_elements_located((通過。CSS_SELECTOR lightning-formatted-date-time)))] = [elem頭銜。文本的elem WebDriverWait(司機,20)除非(EC.visibility_of_all_elements_located((通過。CSS_SELECTOR,”p [class = ' Sub-heaading1 '] "))))
從pyspark.sql。類型進口StringType、StructType StructField模式= StructType ([StructField(“日期”,StringType ()), StructField(“標題”,StringType ()))) df =火花。createDataFrame(列表(zip(日期、標題)),模式=)顯示(df)

結果我們可以看到最新的帖子dataframe。現在我們可以離開司機。

driver.quit ()

那篇文章準備的版本運行筆記本可以在:https://github.com/hubert-dudek/databricks-hubert/blob/main/projects/selenium/chromedriver.py

進口筆記本進磚,去文件夾在您的“工作場所”- >從箭頭菜單中,選擇“URL”- >點擊“導入”- >https://raw.githubusercontent.com/hubert-dudek/databricks-hubert/main/projects/selenium/chromedriver..。作為URL。

進口

9回複9

swrd
新的貢獻者三世

我跟著你的文章,但這個錯誤信息:selenium_not_working

我怎麼解決?

fishjhu
新的貢獻者二世

我得到以下錯誤。@ W你解決你的嗎?捕獲

fishjhu
新的貢獻者二世

swrd
新的貢獻者三世

@Fisseha博謝謝,這為我工作!

但是我不能得到瀏覽器打開——這將是至關重要的所以我可以提取相關的網絡元素的自動化腳本工作:

selenium_not_working_v.3.0任何想法如何做?

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map