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

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

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
新的貢獻者三世

@Fisseha博我設法得到傳遞錯誤信息通過使用web-driver模塊——下一個挑戰是打開瀏覽器使用“driver.get()方法……

磚執行命令的“成功”沒有打開請求的URL

selenium_not_working_v.2.0

有人知道如何得到工作嗎?

datascientistms
新的貢獻者二世

我跟著這些指令在一個AWS磚平台的支持,不能超越這個錯誤我每次運行以下代碼:Beplay体育安卓版本

部分錯誤:

不能連接到security.ubuntu.com: 80

代碼:

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

我提供了完整的錯誤這篇文章的底部。我做錯了什麼?我看著網絡acl AWS帳戶和安全組違約,它看起來像我應該在/出站HTTP訪問(80)端口,但我不是一個AWS專家。我添加了一個新的安全組Outbout 80訪問,試圖解決但沒有工作,可能是redundent。可以使用一些幫助排除故障。

我試著運行以下完整的錯誤建議讓我偽裝的錯誤消息:

建議的代碼:

% sh sudo apt-get更新

完全可以發現我的錯誤StackOverflow帖子(太長)。

我能夠得到這個固定的工作與我們的IT部門。80端口需要% sh指揮我們的防火牆配置被特定的雲平台上的端口80。Beplay体育安卓版本

我有一個新問題。當試圖運行第一個命令pip安裝硒命令後,我得到這個錯誤。

WebDriverException:消息:未知錯誤:無法發現打開的頁麵

@Hubert杜德克的想法嗎?

aa_204
新的貢獻者二世

@Hubert杜德克:我試圖運行上麵的腳本,但chrome驅動程序安裝失敗的間歇性。你能請為推薦一些解決方案。

圖像

Hubert_Dudek1
尊敬的貢獻者三世

你好,我將再次測試它在運行時12日也在幾周使用@Henry灰色的發現。

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

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

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

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

Baidu
map