記錄一次C#在arm64的Ubuntu下安裝使用selenium的過程
手頭上有一臺沒用的安卓手機,想著安裝Ubuntu當爬蟲服務器用,安卓手機root后使用delopy安裝啟動Ubuntu系統這些前置過程就不談了
重點談怎么在ssh下安裝使用selenium的過程
首先我們安裝aptitude這個軟件包管理庫,這個庫相對于apt功能,對軟件的依賴處理更加優秀,且使用方式和apt一樣
sudo apt-get install aptitude
然后需要安裝chromium相關的安裝包
sudo aptitude install chromium-browser
緊接著你會看到以下信息
root@localhost:~# sudo aptitude install chromium-browser The following NEW packages will be installed: chromium-browser chromium-browser-l10n{a} chromium-codecs-ffmpeg-extra{a} The following partially installed packages will be configured: chromium-chromedriver 0 packages upgraded, 3 newly installed, 0 to remove and 4 not upgraded.
安裝完畢以后,輸入以下命令chromedriver看安裝是否正常
root@localhost:~# chromedriver
Starting ChromeDriver 112.0.5615.49 (bd2a7bcb881c11e8cfe3078709382934e3916914-refs/branch-heads/5615@{#936}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
當看到ChromeDriver was started successfully.后,表示chromedriver已經成功啟動,然后就可以按Ctrl+C關閉命令行了
然后我們打開visual studio新建 .Net 7(.net6或者.net core項目都可以,但不能用fm框架,因為不能跨平臺運行在arm64)控制臺項目等,這些過程可以省略
然后打開Nuget搜索selenium

我們安裝第一個就可以了
然后我們鍵入以下代碼
private static void Main(string[] args)
{
var service = ChromeDriverService.CreateDefaultService();
var option = new ChromeOptions();
option.AddArgument("--headless");//不顯示窗口
option.AddArgument("--disable-gpu");//禁用顯卡
option.AddArgument("--no-sandbox");//root權限下運行所以禁用沙盒
option.AddArgument("--disable-dev-shm-usage");//關閉開發檢測,不然會報錯
using (IWebDriver driver = new ChromeDriver(service, option))
{
driver.Navigate().GoToUrl("http://www.baidu.com"); //driver.Url = "http://www.baidu.com"是一樣的
var source = driver.PageSource;
Console.WriteLine(source);
}
}
接下來,我們右鍵項目,發布,發布到文件夾

.net 7的生成單個文件以及剪接未使用的代碼功能相當強大,可以大幅度減少應用大小,當然,如果遇到程序不能運行的情況,也還是需要取消勾選裁剪未使用代碼的功能的
然后我們把生成的單個文件傳輸到ubuntu里面去
使用 chmod +x 給應用提權,緊接著運行就可以了,這里/root/ChromeS是我這邊用來測試項目的路徑,請自行修改成自己的
chmod +x /root/ChromeS
/root/ChromeS
以上就是全部教程了

浙公網安備 33010602011771號