gpt4 book ai didi

c# - 使用 AngleSharp 加载资源文件

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:03 31 4
gpt4 key购买 nike

我将 AngleSharp 和 AngleSharp.Scripting.Javascript 的 nuget 包导入到一个空项目中,以查看在应用 javascript/css 后是否可以从网页解析 html(如 headless 浏览器)。

我正在使用 http://pycoders.com/archive/ (导航到在浏览器中使用 javascript 填充的时事通讯存档)作为测试 url。

显示内联 javascript 功能的基本示例脚本对我有用,并且在加载 html 后处理 javascript 等...但是使用 var document = await browseingContext.OpenAsync(new Url("http://pycoders.com/archive/"), CancellationToken.None); 不处理从外部文件资源加载的脚本/css。

调试问题的尝试导致我将 IResourceLoader 接口(interface)实现为我自己项目中 AngleSharp 中包含的默认 ResourceLoader 的副本,并且似乎为网站返回了 favicon 资源响应流,但第一个样式资源文件( https://s3.amazonaws.com/pycoders2/css/bootstrap.css ) 没有被 WebRequest 加载到 ResponseStream 中。

public async Task<IResponse> RequestAsync(CancellationToken cancellationToken)
{
...

_http.BeginGetResponse(ReceiveResponse, null);
await _completed.Task.ConfigureAwait(false);

if (cancellationToken.IsCancellationRequested)
return null;

return GetResponse();
}

对于上面的 css 资源文件,运行代码到达 _http.BeginGetResponse(ReceiveResponse, null); 行,但永远不会调用 RecieveResponse 方法。

我希望有人可以帮助我在 AngleSharp 中加载资源,因为它看起来像是一个下降的 html 解析器,javascript/css 预处理会很好地完成它,消除我对 phantomjs 和 Selenium 的需要。

编辑:

渲染 html 时当前正在运行的资源任务的更多详细信息如下:

https://s3.amazonaws.com/pycoders2/img/favicon.ico - 随机完成

https://s3.amazonaws.com/pycoders2/img/favicon.ico - 随机完成

https://s3.amazonaws.com/pycoders2/css/bootstrap.css - 等待激活

https://s3.amazonaws.com/pycoders2/css/main.css - 等待激活

http://fonts.googleapis.com/css?family=Lato:300,400,900 - 随机完成

https://s3.amazonaws.com/pycoders2/img/header.png - 等待激活

http://us4.campaign-archive1.com/generate-js/?u=9735795484d2e4c204da82a29&fid=1817&show=200 - 随机完成

https://code.jquery.com/jquery-1.10.2.min.js - 随机完成

https://s3.amazonaws.com/pycoders2/js/bootstrap.min.js - 等待激活

最佳答案

目前我最好的猜测是集成的 HTTP 请求器无法处理 SSL 证书(过去有过这个问题;对于大多数页面它有效 - 对于一些它不能)。由于 AWS 实例也接受“http”请求,您可以尝试将 URL 修改为 http://s3.amazonaws.com/pycoders2/css/bootstrap.css 吗?作为一个邪恶的 hack,您可以包装现有的 HTTP 请求程序并将其与从 https 修改为 http 的 URL 一起使用。

这样可以吗?

备注:我试图允许所有 SSL 请求。这在 HttpWebRequest 的常规 .NET 版本中是可能的。不幸的是,PCL 版本没有这些选项。

关于c# - 使用 AngleSharp 加载资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31341474/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com