首页 > 解决方案 > 从 .NET 解决方案中抓取网页(包括 AJAX)

问题描述

有人成功地在天蓝色功能中制作了抓取软件吗?我需要执行某种动态内容加载,例如 Web 浏览器控件或 selenium,在抓取开始之前加载所有内容。由于 azure 函数的性质,似乎 Selenium 不是一种选择。

我正在尝试抓取一些网页并提取内容。页面非常动态。所以首先加载 HTML,然后通过我延迟加载的 javascript 数据。如果使用标准的 http 请求,我将无法获取数据。我可以在 .NET 中使用 BrowserControl 并等待就绪状态,但 Browser 控件需要浏览器并且不能在 Azure 函数中使用。可能 HtmlAgilityPack 是正确的答案。我在 5 年前尝试过,当时它在格式化 html 时非常糟糕。我可以看到有某种 javascript 库值得一试。您是否尝试过使用 HtmlAgilityPack 的那部分?

标签: c#.netajaxweb-scrapingazure-functions

解决方案


你的问题纯粹是.NET-C#-ish(至少我假设你使用.net c#)。请参考这个答案。如果您通过 .NET 以某种方式实现您的目标,您可以在 Azure 函数中实现 - 在这条路的这一边没有任何限制。

当然,您将需要一个以某种方式模拟 Web 浏览器的外部第三方库。我知道 Selenium 在某种程度上使用了浏览器“驱动程序”(不确定)——这可能是一个更彻底研究的想法。

我曾(很快将再次)受到类似请求的挑战,但我没有找到明显的解决方案。我个人的期望是应该开发和专用的外部服务(或其他东西),然后可以将结果发送到 Azure HTTP 触发器函数,该函数将继续进行分析。即使是这个所谓的“服务”也可以有一个可以从任何地方使用的 Web API 接口(例如 Azure 函数)。


推荐阅读