记录一次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
以上就是全部教程了