- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
与 AngleSharp ,加载 HTML 页面并等待所有样式表下载(如果需要)并且所有脚本都准备好执行解析器,我这样做
public sealed class WebReader
{
private IDocument _ashDocument;
public async Task Load(string Url)
{
var config = Configuration.Default.WithDefaultLoader().WithJavaScript().WithCss();
var context = BrowsingContext.New(config);
_ashDocument = await context.OpenAsync(Url);
}
public IEnumerable<string> getImage()
{
return _ashDocument.QuerySelectorAll("img").Select(n => n.Attributes["src"].Value);
}
}
static void Main(string[] args)
{
WebReader wReader = new WebReader();
AsyncContext.Run((Action)(async () =>
{
await wReader.Load("http://blogs.msdn.com/b/dotnet/");
}));
IEnumerable<string> imageUrls = wReader.getImage();
foreach (string url in imageUrls)
{
Console.WriteLine(url);
}
Console.ReadKey();
}
AsyncContext 是 AsyncEx 的一部分图书馆。
是否可以在没有 AsyncEx 库的情况下做同样的事情?
最佳答案
Is it possible to do the same thing without AsyncEx library?
不在控制台应用程序中。 AsyncContext
的全部要点是允许您等待 Main
中的方法,它本身不是异步的(也不可能)。唯一的选择是阻止任务。此外,正如@StephanCleary 指出的那样,上下文中的延续将在单个线程上恢复,而不是任意线程池线程。
没有它,它只会是:
static void Main(string[] args)
{
WebReader wReader = new WebReader();
wReader.Load("http://blogs.msdn.com/b/dotnet/")).Wait();
IEnumerable<string> imageUrls = wReader.getImage();
foreach (string url in imageUrls)
{
Console.WriteLine(url);
}
}
在极少数情况下,使用 Task.Wait
阻塞是可以的,这就是其中之一。
旁注 - 异步方法应标有 Async
后缀,因此您应该使用 LoadAsync
。此外,.NET 方法命名约定是 Pascal 大小写,而不是驼峰大小写。
关于c# - 如何在没有 AsyncEx 库的情况下调用 anglesharp 异步方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357913/
我正在使用 AngleSharp 解析文档。我有一个文本节点 (NodeName: "#text"),我想在其中插入一些 HTML。我当然可以将 NodeValue 重置为我想要的任何值,但它仍然是一
无论如何让AngleSharp在解析片段时不创建完整的HTML文档。例如,如果我解析: The Title 我在 DocumentElement.OuterHtml 中得到一个完整的 HTML 文档:
所以我使用的是 .NetFW 4.7.1,并且在实例化 Premailer.Net 时出现以下错误: Could not load type AngleSharp.Parser.Html.HtmlPa
我想知道是否可以使用 AngleSharp 从 HTMLDocument 中提取格式化文本。我正在使用以下代码来提取文本。我遇到的问题是提取的文本一起运行,每个元素之间没有中断。 var parser
我正在使用 AngleSharp 开发有限的浏览器功能.它解析 HTML 的方式让我有点困惑。例如,以下“div”的内容被解析为一个 BR 子元素和一个带有文本“test”的 TextContent
当您没有要使用的类名或 ID 时,找不到许多使用 AngleSharp 进行解析的示例。 HTML 我想从任何 中找到 href标题为 Bing 的标签 在 Python BeautifulS
在 AngleSharp IHtmlAnchorElement 中有 DoClick() 方法。在我的例子中,我需要点击一个 div。我该怎么做? HTML: C#: IHtmlAnchorElem
我开始在一个项目中使用 Anglesharp,我不仅需要获取和下载 HTML,还需要获取和下载文档的图像。我知道在 Document 对象中有一个名为 Images 的属性,但显然它并没有得到所有这些
尝试使用 AngleSharp 解析 HTML 并遇到问题 https://opensource.org/licenses/MS-PL 以下代码在 Linqpad 中运行时返回“0” var url
我将 AngleSharp 和 AngleSharp.Scripting.Javascript 的 nuget 包导入到一个空项目中,以查看在应用 javascript/css 后是否可以从网页解析
对于这个具体的例子,我正在处理 input标签做一些工作并用自定义标签替换它们。输出为 .. var parser = new HtmlParser(); var html = parser.pars
我正在使用 AngleSharp要解析 HTML5,我现在正在做的是用一些 HTML 包装我想要解析的元素,使其成为有效的 HTML5,然后在其上使用解析器,有更好的做法吗?意思是,直接解析特定元素并
我想试试我的手和网页抓取。我注意到 Anglesharp 非常适合 .Net 环境。我正在尝试从 yelp 站点获取所有描述和评级的列表,但我没有收到任何错误或任何结果。这是 html 外观的一个子集
我正在尝试使用 AngleSharp 解析 HTML 网页及其 CSS。遗憾的是,我只找到了折旧的示例,并且我正在努力寻找最新的实现。 目前,我正在尝试这样做: var config = Conf
我能否创建一个 private static readonly HtmlParser HtmlParser = new HtmlParser(); 并在多个线程中安全地使用它? 或者我应该为每个线程或
我正在尝试从下面提到的网站中提取价格。我正在使用 AngleSharp用于提取。在网站上,价格列在下面(作为示例): 650.00 我正在使用以
我正在尝试使用 AngleSharp 库解析一些 HTML,到目前为止它一直很棒。我现在偶然发现了一个我想解析以下 HTML 片段的场景: Link 1 Some text that happens
如何使用 AngleSharp 从 HTML 字符串中找到所有评论标签。评论可以是单行,也可以是多行。 最佳答案 您可以使用 AngleSharp.Extensions.ApiExtensions
与 AngleSharp ,加载 HTML 页面并等待所有样式表下载(如果需要)并且所有脚本都准备好执行解析器,我这样做 public sealed class WebReader {
我有一段这样的代码可以在 AngleSharp 0.9.3 中运行: public IEnumerable FindNodesInStyle(StyleContext context) { i
我是一名优秀的程序员,十分优秀!