0

我想使用带有 AngleSharp 的 c# 解析网站,使用静态页面很容易,但是有一个问题,我无法解析仅对授权用户可用的信息。我应该怎么做才能以编程方式自动进入网站并解析所有对我有用的信息?

4

1 回答 1

0

根据所使用的授权方案,这可能非常简单或非常困难/不可能。

那么让我们先来看看 AngleSharp 可以做什么:

  • 任何类型的请求,包括。他们的操纵(根据要求,但也在响应之前)
  • 常规 cookie 管理(当然还有它们的操作)
  • 查询 DOM 并执行“简单”操作(例如,单击按钮、提交表单)
  • 运行简单的 JavaScript 文件

这里的微不足道的意思是:不需要 AngleSharp 提供的任何功能的脚本,例如渲染树信息、高级 CSSOM 访问,... - 或需要非 ES5 兼容解析器的脚本(例如,使用 ES6 或一些特殊的非-标准能力)。

现在,由于我不知道您遇到的授权方案或确切问题是什么(一些代码/MWE 会有所帮助!)我将只举一个简单的点击示例。

var context = BrowsingContext.New(Configuration.Default.WithDefaultLoader().WithCookies());
var loginPage = await context.OpenAsync("http://yourpage.com");
var loginForm = loginPage.QuerySelector<IHtmlFormElement>("form");
var profilePage = await loginForm.SubmitAsync(new { userName = "myUser", password = "password" });
// get something on profilePage

请注意,在此示例中,登录表单的表单字段名称是userNamepassword- 对于您的登录页面,它们可能不同。另请注意,您的页面可能包含多个表单,并且选择器可能比简单的form.

于 2018-12-09T17:14:10.093 回答