You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium C#网页抓取无法解析PageSource及Chrome报错问题求助

问题解决说明

1. Selenium无返回结果

核心原因是提交搜索后未等待页面加载完成就执行元素查找逻辑,此时目标元素还未渲染到页面中,同时你初始化的显式等待超时时间仅1秒,不足以覆盖页面加载耗时。
修复代码:

// 初始化等待时将超时时间改为10秒
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

// 提交搜索后新增等待逻辑
submit.Click();
// 等待目标元素加载完成再执行后续操作
wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.XPath("//div[@class='grid-address']")));

// 再获取元素
var elements = driver.FindElements(By.XPath("//div[@class='grid-address']"));

2. Html Agility Pack返回空异常

错误调用了Load方法,该方法用于读取本地HTML文件路径,解析页面源码字符串需要用LoadHtml方法:

// 错误写法
htmlDoc.Load(currentPage);
// 正确写法
htmlDoc.LoadHtml(currentPage);

3. AngleSharp无返回结果

方法定义使用了async void,控制台程序调用该方法时不会等待异步逻辑执行完成,进程会直接退出导致无输出。修改方法返回值为Task,调用时等待执行完成即可:

// 修改方法定义
public static async Task AngleSharpParse(string currentPage)
{
    // 原有逻辑保持不变
}

// 调用处新增等待
AngleSharpParse(currentPage).Wait();

4. Chrome相关警告错误屏蔽

这些错误属于Chrome设备检测的日志,不影响正常爬取,通过Chrome启动参数即可屏蔽:

var options = new ChromeOptions();
// 屏蔽日志输出
options.AddArgument("--log-level=3");
options.AddArgument("--disable-logging");
// 禁用蓝牙、USB设备检测
options.AddArgument("--disable-bluetooth");
options.AddArgument("--disable-usb-discovery");

// 初始化驱动时传入配置
IWebDriver driver = new ChromeDriver(options);

内容的提问来源于stack exchange,提问作者Quintessa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:45:01